Как найти все файлы содержащие строку и удалить её?

Сабж.
Что-то по отдельность гуглится, а до кучи не собирается.

Помогите.

Допустим вот файлы содержащие строку
grep -rH ICRHTE9CQUxTWydfMTk4OTg2NDc5NV8nXT1BcnJheShiYX . |  cut -d: -f1

Теперь их надо перенаправить в sed и удалить ВСЮ строку, а не только это вхождение и сохранить. Вроде бы простая задача, но что-то усталость дает о себе знать видимо - не могу сообразить.
  • Вопрос задан
  • 3381 просмотр
Решения вопроса 2
Suntechnic
@Suntechnic Автор вопроса
Сам спросил, сам ответил - можно вспомнить про xargs и тупо в лоб:
grep -rH ICRHTE9CQUxTWydfMTk4OTg2NDc5NV8nXT1BcnJheShiYX . |  cut -d: -f1 | xargs sed -i /ICRHTE9CQUxTWydfMTk4OTg2NDc5NV8nXT1BcnJheShiYX/d

Может есть методы и поэффективней, но мне хватило и этого.
Ответ написан
Комментировать
@RPG
grep -rlZ xxx . | xargs -0 sed -i.bak /xxx/d

Седом можно запороть файлы, не забывайте про бекап. Также не забывайте, что бывают файлы с пробелами внутри - будут проблемы. В целом близко:)

Если файлов очень много, можно попробовать применить многопоточность:

grep -rlZ xxx . | xargs -0 -P4 -l8 sed -i.bak /xxx/d
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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