Как использовать sed с файлом шаблонов и sed на месте - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь использовать список шаблонов для поиска в 4 больших файлах и удалить строку, содержащую регулярное выражение.

Я пытался указать путь к файлу, но он не работал

sed -n '/ {home / dirco / shut} / p' rimco rimco2 aval aval2

Я пытался использовать опцию sed -f, но она тоже не работала

sed -f home / dirco / shut rimco rimco2 aval aval2

В конечном итоге цель будет заключаться в том, чтобы уложить ее, удалив эту строку, если шаблон найден.

Ответы [ 3 ]

2 голосов
/ 14 апреля 2019

Это может сработать для вас (GNU sed):

sed 's#/#\\/#g;s#.*#/&/p#g' patternFile | sed -nf - file1 file2 file3 ...

Превратите patternFile в скрипт sed и запустите его для файлов данных.

N.B. Разделитель sed / сначала указывается в кавычках, и каждая строка файла patternFile превращается в адрес, который печатается /pattern/p.

0 голосов
/ 14 апреля 2019

Вот как сделать то, что вы хотите, эффективно и надежно, используя GNU awk для редактирования на месте (при условии, что ваш список регулярных выражений в regexpsfile не массивен):

awk -i inplace 'NR==FNR{re=re sep "(" $0 ")"; sep="|"} NR!=FNR && $0~re{next} 1' regexpsfile rimco rimco2 aval aval2
0 голосов
/ 14 апреля 2019

попробуйте это:

cmd=$(
echo -n "sed -i '"
while read -r line; do
    echo -n "/$line/d;"
done < patternfile.txt
echo "'"
)
"$cmd" rimco rimco2 aval aval2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...