Unix perl соответствует строке и удаляет строку

Только что наткнулся на другое применение: любил стирать жесткий диск с шаблоном, отличным от нуля (например: dd if = / dev / zero of = / dev / sdd bs = 1M ) и использовал для него « да »:

да UUUUUUUUUUUUU> / dev / sdd

1
22.02.2019, 11:50
1 ответ

С

cp /tmp/exclude_list /tmp/exclude_list.tmp
grep -Fx -v -e "$host" /tmp/exclude_list.tmp >/tmp/exclude_list
rm /tmp/exclude_list.tmp

вы должны удалить каждую строку, точно совпадающую со строкой в ​​$host. Измените -Fxна просто -F, чтобы удалить любую строку, которая содержит строку. Не используйте -F, если вы хотите использовать $hostкак регулярное выражение.

Или с Perl:

perl -i -sn -e 'print unless /$host/' -- -host="$host" /tmp/exclude_list

Параметры, используемые с perlздесь: -iдля редактирования места -, -sдля разрешения Perl инстанцировать $hostпеременную Perl из командной строки и -nдля вывода только явным образом. изнутри неявного цикла, который Perl обеспечивает вокруг кода. -eпринимает фактический код в качестве аргумента.

Код Perl удалит все строки, не соответствующие регулярному выражению $host.

Для использования $hostв качестве строки :

perl -i -sn -e 'print unless index($_, $host) >= 0' -- -host="$host" /tmp/exclude_list
2
27.01.2020, 23:30

Теги

Похожие вопросы