如何使用“ sed中的Unix内置Command”

时间:2019-08-09 06:41:59

标签: linux 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命令

2 个答案:

答案 0 :(得分:2)

Unix内置命令必须为expanded

您可以:

  

$(主机名)


  

`主机名`

但是back-tic太旧了,已经过时了。


要在sed中扩展命令,您需要使用双引号"。单引号'不能扩展。

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

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

答案 1 :(得分:0)

使用grep

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

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