我有如下文件
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命令
答案 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.com
与foobar.baz.com
不匹配