Моя цель - удалить строку в файле, только если PATH совпадает с PATH в файле
Например, мне нужно удалить все строки с / etc / sysconfig PATH из / tmp / file file
more /tmp/file
/etc/sysconfig/network-scripts/ifcfg-lo file1
/etc/sysconfig/network-scripts/ifcfg-lo file2
/etc/sysconfig/network-scripts/ifcfg-lo file3
Я пишу следующий код Perl (код perl, встроенный в мой bash-скрипт), чтобы удалить строки, имеющие "/ etc / sysconfig"
export FILE=/etc/sysconfig
perl -i -pe 's/\Q$ENV{FILE}\E// ' /tmp/file
Но я получаю следующее после запуска кода perl: (вместо того, чтобы получить пустые строки)
/network-scripts/ifcfg-lo file1
/network-scripts/ifcfg-lo file2
/network-scripts/ifcfg-lo file3
первый вопрос:
Как изменить синтаксис perl: perl -i -pe 's / \ Q $ ENV {FILE} \ E //', чтобы удалить строку, соответствующую требуемому PATH (/ etc / sysconfig)?
второй вопрос:
Аналогично первому вопросу, но строка будет удалена, только если PATH соответствует первому полю в файле
Пример:
/ tmp / file перед редактированием perl:
file1 /etc/sysconfig/network-scripts/ifcfg-lo
/etc/sysconfig/network-scripts/ifcfg-lo file2
/etc/sysconfig/network-scripts/ifcfg-lo file3
/ tmp / file после редактирования perl:
file1 /etc/sysconfig/network-scripts/ifcfg-lo