Grep: поиск и замена полной строки


13

Команда

 grep "foo" myfile.txt

печатает все совпадающие строки в моем файле.

Теперь я хочу заменить полную строку другой строкой. Как я могу это сделать?

Ответы:


13

Если вы соответствуете подстроке всей строки, вы можете использовать sкоманду sed с регулярным выражением, чтобы убрать оставшуюся часть строки:

sed -i 's/^.*foo.*$/another string/' myfile.txt

или используйте cкоманду для замены совпавшей строки за один раз:

sed -i '/foo/ { c \
another string
}' myfile.txt

Если вы не хотите вводить многострочные команды в командной строке, вместо этого вы можете поместить их в скрипт:

$ cat foo.sed
/foo/ { c \
another string
}

$ sed -i -f foo.sed myfile.txt

Благодарность! когда я использую второй вариант, я получаю: sed: -e выражение # 1, char 0: не соответствует `{'
зажим

в конце первой строки вам нужно набрать \, а затем нажать Return - важно, чтобы \ выходил из этой первой новой строки. Затем убедитесь, что он }'находится в отдельной строке от another string: замена - это все, что находится на этой второй строке, в том числе, }если вы поставили его там.
бесполезно

-1

Вы можете использовать INPLACE functionnality в СЭД :

sed -i -e 's/foo/bar/' myfile.txt

Это заменит только все, fooа barне всю строку.
Джахид
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.