我有一台主机名为
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
我只需删除带有主机名的条目。
sed -i "/${HOSTNAME}:/d" /etc/fstab
。
这里的关键是插值发生在双引号内,shell 首先迭代命令,然后将其作为参数传递给 sed。
sed '/x/,$d'
要求 sed 删除从第一个匹配 x
到文件末尾的所有行。听起来你只是想删除匹配的行,这样就会变成 sed '/x/d'
。
您可能还应该添加一个字符串开头锚点
^
并使用:
sed -i '/^'"$HOSTNAME"':/d' /etc/fstab
或者,由于脚本的其余部分非常简短,您可以在整个脚本中使用双引号:
sed -i "/^$HOSTNAME:/d" /etc/fstab