如何获取列表并将其从文件中删除?

xen*_*ide 10 command-line shell grep text-processing

我有一长串域名需要从 /etc/remotedomains 中删除。它们在文件中可能没有任何特定的顺序。每个域在一行上。

我如何遍历列表并在远程域中找到该行并将其删除。

sep*_*p2k 11

grep -Fxf list -v /etc/remotedomains > remotedomains.new
mv remotedomains.new /etc/remotedomains
Run Code Online (Sandbox Code Playgroud)

-v告诉grep来不匹配的模式只输出线。

-f list告诉grep来从文件中读取模式list

-F告诉grep来解释模式为纯字符串,而不是正则表达式(这样你就不会遇到与正则表达式元字符的麻烦)。

-x告诉grep来整条生产线相匹配,例如,如果有一个模式foo只应删除行foo,也不行foobarbarfoo

  • 注意:在做这样的事情之前,永远记得备份`/etc/localdomains`和`/etc/remotedomains`。 (3认同)
  • `-F` 用于固定字符串匹配(“精确匹配”),但它**不**强制模式匹配整行。[POSIX 指定`-x` 标志](http://www.opengroup.org/onlinepubs/009695399/utilities/grep.html) 将匹配限制为模式匹配整行的实例。 (3认同)