使用 sed 删除包含主机名的行

0 bash scripting sed

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

sed -i '/'"$HOSTNAME:"'/,$d' /etc/fstab
Run Code Online (Sandbox Code Playgroud)

输入文件:

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
Run Code Online (Sandbox Code Playgroud)

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

Ed *_*ton 5

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

您可能还应该添加一个字符串开头锚点^并使用:

sed -i '/^'"$HOSTNAME"':/d' /etc/fstab
Run Code Online (Sandbox Code Playgroud)

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

sed -i "/^$HOSTNAME:/d" /etc/fstab
Run Code Online (Sandbox Code Playgroud)