Unix: найдите определенную строку в файлах в каталоге и закомментируйте / замените / удалите эту строку - PullRequest
0 голосов
/ 04 октября 2018

Мне нужно найти строку "BATCH NO" во всех файлах "setenv.csh", найденных в каталоге, и 1) удалить строку

или

2) заменить ее на BATCHДА

или

3) закомментируйте строку (добавьте «#» перед «BATCH NO»)

Примечание: строка «BATCH NO» встречается только вsetenv.csh

Я думаю, что потребуется команда sed.Пожалуйста помоги.

1 Ответ

0 голосов
/ 04 октября 2018

Я не могу найти решение в одну строку.Для поиска файлов вы можете сделать:

find . -iname 'setenv.csh' 

Затем вы можете использовать следующую функцию, чтобы заменить его на BATCH YES

update () {
  out=$(echo $1 | sed 's/.csh/.patch.csh/g')
  cat $1 | sed 's/BATCH NO/BATCH YES/g' > $out
  mv $out $1
}
...