我有如下文件
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