Grep: поиск и сплошная линия замены

Почему не только используют md5deep инструмент, который делает точно это? Большинство дистрибутивов Linux включает его, обычно в названном пакете md5deep.

13
23.02.2012, 22:00
2 ответа

При соответствии подстроке целой строки можно или использовать sed's s команда с regex для вытирания остальной части строки:

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
13
27.01.2020, 19:53
  • 1
    Спасибо!, когда я использую вторую опцию, я добираюсь: sed: выражение № 1-e, символ 0: несопоставленный '{' –  clamp 24.02.2012, 12:34
  • 2
    набора в конце первой строки, необходимо ввести \и затем поразить Возврат - важно что \Escape та первая новая строка. Затем удостоверьтесь }' находится на отдельной строке от another string: замена - все на той второй строке, включая } если Вы помещаете его там. –  Useless 24.02.2012, 14:44

Можно использовать оперативную функциональность sed:

sed -i -e 's/foo/bar/' myfile.txt
-1
27.01.2020, 19:53
  • 1
    Это только заменит каждый foo с bar не целая строка.. –  Jahid 13.06.2015, 22:38

Теги

Похожие вопросы