Вы хотите использовать sed
дважды: один раз в черном списке, чтобы создать программу sed, которая удаляет каждую строку в черном списке, и затем второй раз, применяя сгенерированный скрипт sed к вашим реальным данным.
Сначала
$ sed -e 's@^@s/@' -e 's@$@//g' < blacklist.txt > script.sed
Если blacklist.txt
выглядит как
word1
word2
....
wordN
тогда script.sed
будет выглядеть
s/word1//g
s/word2//g
...
s/word3//g
Использование символов @
, приведенных выше, может показаться немного запутанным. Обычный способ записи команды замены sed
- s/old/new/
. Это довольно неудобно, если либо old , либо new содержат косую черту. Таким образом, sed
позволяет вам использовать любой символ, который вы хотите сразу после команды замены. Это означает, что вы можете написать s@foo/bar@plugh/plover@
вместо s/foo\/bar/plugh\/plover/
. Я думаю, вы согласитесь, что первое легче читать на 1025 . 1027 *
Как только вы сгенерируете script.sed
, запустите
$ sed -f script.sed < file > censored-file
Вы, конечно, можете использовать новомодную (т. Е. Менее 20 лет) опцию -i
для редактирования на месте.