如何使用"Unix built in Command in sed"



我有如下文件

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
10.120.6.19 slatbnrduva00.ad.admin slatbnrduva00
#172.25.17.75 infrbaddc01.ad.lab

其中"slatbnrduva00"是我的主机名。现在我正在尝试使用 sed 删除该行,如下所示

sed -i '/`hostname`/d' myhost

但它并没有删除那行。请让我知道如何在 sed 中使用内置的 linux 命令

Unix内置命令需要expanded

你可以做:

$(主机名(


"主机名">

但是背抽是旧的和不推荐使用的。


要在 sed 中展开命令,需要使用双引号"。 使用单点报价'没有扩展。

所以这应该是最好的理由:

sed -i "/$(hostname)/d" file

使用grep

grep -vFw "$(hostname -f)" file

-v反转匹配,这将有效地删除包含主机名的行。-F会将搜索模式视为固定字符串而不是正则表达式。意思是主机名中的.是指字面.,而不是任何字符-w在单词边界处匹配,这意味着bar.baz.com不匹配foobar.baz.com

最新更新