Як "шукати та замінювати" багато файлів?


11

Я використовую grepкоманду для пошуку рядка в багатьох файлах. Чи є щось схоже на "пошук і заміна"?

Відповіді:


19

Ви шукаєте sedкоманду. Наприклад, замінити "собаку" на "кішку" у всіх текстових файлах у поточному каталозі:

sed -i 's/dog/cat/' *.txt

1
Просте і приємне.
Луїс Альварадо

1

sed приходить на думку. Приклад:

sed s/cat/dog/ <input >output

Він шукає кота в рядку і ставить собаку на його місце у вводі файлу і записує у вихідний файл.


1

sedє правильним інструментом; але, як альтернатива, ви навіть можете використовувати exкоманди в vim:

vim -c 'args <files> | argdo %s/cat/dog/g | x'

де <files>перелік файлів або шаблонів, у яких потрібно зробити заміну.



0

Ви можете використовувати Vim в режимі Ex:

for b in *.txt
do
  ex -sc '%s/OLD/NEW/g|x' "$b"
done
  1. % виберіть усі рядки

  2. s замінник

  3. g замінити всі екземпляри в кожному рядку

  4. x зберегти і закрити

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.