Для простого примера, скажем, у меня есть файл списка, который имеет следующее содержимое
cat dog pig
dog hat
cat
clap sing
king
ca
cat hog
plate
plate
one two three
cat
У меня тогда есть файл 'pattern'. С приведенным ниже содержанием
cat
dog
Я хотел бы, чтобы из файла списка был создан новый файл, но все строки, начинающиеся с cat или dog, я не скопировал.
Я видел несколько примеров, как это может работать, например,
.sed '/pattern to match/d' ./infile > ./newfile
Из того, что я собрал, sed не может обработать «файл ввода шаблона». Это программа, похожая на sed, которая может достичь того, что я хотел бы сделать? Если нет, то можно создать программу на языке Python, которая считывает каждую строку из файла 'pattern' и запускает команду sed для файла списка, например, несколько проходов с сидами
Вы можете использовать Tell grep, чтобы прочитать его шаблоны из файла - с ключом -v (инвертировать), который должен делать то, что вы хотите
fgrep -vf patternfile listfile
Из man grep
-f FILE, --file=FILE
Obtain patterns from FILE, one per line. The empty file
contains zero patterns, and therefore matches nothing. (-f is
specified by POSIX.)
Я не уверен, хотел ли ты этого или нет. Я сделал это, что вы хотели, удалив собаку & amp; кошка несколько шаблонов и сохраненные изменения в новом файле. см. код
sed '/cat/d; /dog/d' file1.txt > file2.txt
ниже вместе с примером в терминале ( CTRL kbd> + ALT + T kbd>)
raja@debian:~/sand$ cat file1.txt
cat dog pig
dog hat
cat
clap sing
king
ca
cat hog
plate
plate
one two three
cat
raja@debian:~/sand$ sed '/cat/d; /dog/d' file1.txt > file2.txt
raja@debian:~/sand$ cat file2.txt
clap sing
king
ca
plate
plate
one two three
raja@debian:~/sand$