Ответ 1
Попробуйте следующее:
sed "s/aaa=.*/aaa=xxx/g"
Предположим, что у меня есть файл с строками
aaa=bbb
Теперь я хотел бы заменить их на:
aaa=xxx
Я могу сделать это следующим образом:
sed "s/aaa=bbb/aaa=xxx/g"
Теперь у меня есть файл с несколькими строками следующим образом:
aaa=bbb aaa=ccc aaa=ddd aaa=[something else]
Как заменить все эти строки aaa=[something]
на aaa=xxx
с помощью sed?
Попробуйте следующее:
sed "s/aaa=.*/aaa=xxx/g"
Вы также можете использовать строку sed change, чтобы выполнить следующее:
sed -i "/aaa=/c\aaa=xxx" your_file_here
Это пройдет и найдет строки, которые проходят тест aaa=
, что означает, что строка содержит буквы aaa=
. Затем он заменяет всю строку на aaa = xxx. Вы можете добавить ^
в начале теста, чтобы убедиться, что вы получаете только строки, начинающиеся с aaa=
, но это зависит от вас.
Вот так:
sed 's/aaa=.*/aaa=xxx/'
Если вы хотите гарантировать, что aaa=
находится в начале строки, сделайте это:
sed 's/^aaa=.*/aaa=xxx/'
Если вы хотите использовать awk
, тогда это тоже будет работать
awk -F= '{$2="xxx";print}' OFS="\=" filename
sed -i.bak 's/\(aaa=\).*/\1"xxx"/g' your_file
Это может сработать для вас:
cat <<! | sed '/aaa=\(bbb\|ccc\|ddd\)/!s/\(aaa=\).*/\1xxx/'
> aaa=bbb
> aaa=ccc
> aaa=ddd
> aaa=[something else]
!
aaa=bbb
aaa=ccc
aaa=ddd
aaa=xxx