我想在许多.procmailrc
文件中查找和替换文本,并使用grep
和sed
。
我想从文件中删除以下行(包括开头的新换行符).procmailrc
:
* !^FROM_MAILER
我想要的文件的完整内容更改为:
:0
* !^FROM_MAILER
! [email protected]
到:
:0
! [email protected]
我正在运行的命令是:
grep -lir '\n* !^FROM_MAILER' .procmailrc | xargs sed -i 's/\n* !^FROM_MAILER//g'
但它并没有取代*
.留下的线只有*
上面的。如果我*
按如下方式转义,那也不起作用:
grep -lir '\n\* !^FROM_MAILER' .procmailrc | xargs sed -i 's/\n\* !^FROM_MAILER//g'
所以我试图找出如何进行查找和替换以删除其中包含的整行*
。
答案1
单独使用sed
:
sed -i '/^* !^FROM_MAILER$/d' file
删除包含确切字符串的整行* !^FROM_MAILER
,该字符串之前和之后没有任何内容。该d
命令删除该行。
编辑:如果您想重复地在所有文件中进行替换,请使用以下命令:
find /path -type f -exec sed -i '/^* !^FROM_MAILER$/d' {} +