У меня есть следующее содержание в файл, разделенное на поля:Заменить поле со значением из другой линии
$ cat list
ldap 12309423409875
account01 98734598073
notes 4736594384325
Я хочу, чтобы изменить значение второго поля, принимая входные данные от пользователя, который соответствует первому поле, используя awk. Например, я прошу пользователя ввести поле; если он вводит ldap
, то я должен уметь отличать второе поле первой строки.
Я пробовал следующий сценарий, но он не работает:
generatepasswd()
{
date | md5sum
return
}
cat list
echo "for what do you want to change the password"
pass=`generatepasswd`
read op
awk '$1=="$op"{$2=$pass}1' list > tmp && mv tmp list
я получаю выход, если я использую строку непосредственно вместо $op
; например, если я использую ldap
, я получаю результат, но если я использую $op
, я не получаю вывод. op
состоит из строки ldap
.
Если какой-либо из приведенных ниже ответов помог вам в вашей цели, пожалуйста, примите/отпустите ответ для закрытия, отметив правильный знак, помимо ответа. –