Я хочу, чтобы выполнить ниже одного лайнера в сценарии Perl, чтобы соответствовать линии со значениями переменных owner
и type
и удалить его из файла:Как выполнить Perl один лайнер внутри сценария Perl
perl -i -ne\"print unless /\b${owner}\b/ and /\b${type}\b/;\" /tmp/test
Содержание из /tmp/test
:
node01 A 10.10.10.2
node02 A 10.20.30.1
Это отлично работает, когда я исполняю в оболочке, но то же не работает в сценарии Perl.
Я попытался использовать backticks, system
и exec
. Ничто не работает.
`perl -i -ne\"print unless /\b${owner}\b/ and /\b${type}\b/;\" /tmp/test`
system(q(perl -i -ne\"print unless /\b${owner}\b/ and /\b${type}\b/;\" /tmp/test));
Возможно ли выполнить Perl один вкладыш внутри сценария Perl?
Если да, то что я делаю неправильно здесь?
Примечание: не нужно решение, чтобы удалить строку из файла с SED, Grep, AWK и т.д.
вы должны распечатать команду, которую вы пытаетесь выполнить, вы должны увидеть проблему, то: 'печать д (Perl -i -ne \" не печатать, если/\ б $ {владелец} \ б/и/\ b $ {type} \ b /; \ "/ tmp/test);' –
Также посмотрите ['q {}'] (http://perldoc.perl.org/perlop.html#Quote-and -Quote-like-Operators) в perldoc perlop. –
Зачем запускать другой perl, когда вы уже находитесь в perl? Прочтите 'perlrun', чтобы узнать, что' -i' и '-n' делают - они могут быть тривиально реплицированы самостоятельно. '-i' может выглядеть большим, но на самом деле вам не нужна большая часть его. –