删除 sed 包含主机名的行

问题描述 投票:0回答:2

我有一台主机名为

babuntu10
hostname12
的主机,我只想从我的
fstab
条目中删除主机名之一,但以下
sed
命令会同时删除它们:

sed -i '/'"$HOSTNAME:"'/,$d' /etc/fstab

输入文件:

babuntu10:/root/products/babuntu10 /root/products/babuntu10 nfs soft,timeo=1,retrans=1 0 0
babuntu12:/root/products/babuntu12 /root/products/babuntu12 nfs soft,timeo=1,retrans=1 0 0

我只需删除带有主机名的条目。

bash sed scripting
2个回答
0
投票

sed -i "/${HOSTNAME}:/d" /etc/fstab
。 这里的关键是插值发生在双引号内,shell 首先迭代命令,然后将其作为参数传递给 sed。


0
投票

sed '/x/,$d'
要求 sed 删除从第一个匹配
x
到文件末尾的所有行。听起来你只是想删除匹配的行,这样就会变成
sed '/x/d'

您可能还应该添加一个字符串开头锚点

^
并使用:

sed -i '/^'"$HOSTNAME"':/d' /etc/fstab

或者,由于脚本的其余部分非常简短,您可以在整个脚本中使用双引号:

sed -i "/^$HOSTNAME:/d" /etc/fstab
© www.soinside.com 2019 - 2024. All rights reserved.