Допустим, у меня есть файл со строками
ааа = БББ
Теперь я хотел бы заменить их на:
ааа = ххх
Я могу сделать это следующим образом:
sed "s / aaa = bbb / aaa = xxx / g"
Теперь у меня есть файл из нескольких строк:
ааа = БББ ааа = ссс ааа = ддд aaa = [что-то еще]
Как я могу заменить все эти строки aaa=[something]
с aaa=xxx
помощью sed ?
[something else]
буквальный текст или это просто заполнитель? Каков возможный формат вещи после знака равенства?Ответы:
Попробуй это:
источник
.*
.g
замените все экземпляры regexp на заменуДля этого вы также можете использовать строку изменения sed:
При этом будут найдены все строки, прошедшие
aaa=
проверку, что означает, что строка содержит буквыaaa=
. Затем он заменяет всю строку на aaa = xxx. Вы можете добавить^
в начале теста, чтобы убедиться, что вы получаете только те строки, которые начинаются с,aaa=
но это зависит от вас.источник
sed
требует,c
чтобы за ними следовала обратная косая черта и новая строка, и она не добавляет новую строку к вставленному тексту, но вы можете использовать, например$'/aaa=/c\\\naaa=xxx\n'
.Как это:
Если вы хотите гарантировать, что
aaa=
находится в начале строки, сделайте это:источник
sed 's/aaa=.*/aaa=\'xxx\'/'
но это открывает>
подсказку в новой строке ...Если вы хотите использовать,
awk
это тоже сработаетисточник
источник
Это может сработать для вас:
источник
bbb
,ccc
иddd
совсем то , что ОП имел в виду.