2016-08-01 5 views
-1

Как я могу обновить скрипт, где я могу заменить имя пользователя «u1» любое значение из пользовательского ввода в файле .txtКак я могу заменить имя пользователя и пароль, используя скрипт

'username' => "u1" 

Ниже приводится существующий код: -

#!bin/bash 
echo "\nEnter Username to replace: " 
read name 

sed -i -e s/u1/"$name"/g /var/1.txt 

ответ

0

Используя sed, мы можем разделить заявление на две части - и заменить вторую часть с требуемая переменная [здесь, $ name] - вместо hardcoding скрипта с u1.

sed -i "s#\(.*'username' =>\)\(.*\)#\1 "\"$name\""#" /var/1.txt

Тот же результат может быть достигнут с помощью awk, как показано ниже:

awk -v name="$name" '/username/{gsub($3,"\""name"\"")};1' /var/1.txt

+0

, и если мне нужно добавить запятую в конце $ name, как я могу справиться с этим? Пример: - $ name = admin output: - admin, –

0

Try '$ имя' вместо "$ имя"

Лучший вариант заключается в использовании СЭД -i -r

sed -i -r 's/u1/'$name'/g' /var/1.txt 

Другой вариант, вы можете попробовать это сохранить это временный файл и переместить его обратно

Пример:

sed 's/u1/'$name'/g' /var/1.txt > /tmp/temp 

mv /tmp/temp /var/1.txt 
+0

Опция с -r работал отлично! большое спасибо. В следующей итерации я передаю вход «u3» для замены на «u2» (из предыдущего исполнения выше кода значение «u2» заменяется на «u1»). как это можно решить? –

+0

Я полностью не понял ваше требование. поместите sed в цикл. Также, пожалуйста upvote мой ответ, если вы получили ответ, который вы ищете –

+0

Я хочу, чтобы заменить «u1» или любое другое значение из входного Пример: - «имя пользователя» => «u1» Входное значение -> u2 о/р: - 'имя пользователя' => "u2" код переоформление: - 'имя пользователя' => "u2" Введенное значение -> и3 о/р результаты: - «имя пользователя '=> "u3" –

Смежные вопросы