sed + 删除所有注释行以及匹配特定单词的行

sed + 删除所有注释行以及匹配特定单词的行

我创建了这个 sed 是为了从 fstab 中删除注释行(注释可以以空格或 TAB 等开头)

sed '/^[[:blank:]]*#/d' /etc/fstab

在我的例子中,我还想添加条件以删除包含单词数据的注释行

例子

# UUID=381ff65e-01e0-4e14-9f2a-9e493d13ae45 /data/sdb ext4 defaults,noatime 0 0
#UUID=cbe83dcd-3a01-4160-b1cd-f959106ee3de /data/sdc ext4 defaults,noatime 0 0

所以我尝试了这个语法

 sed '/data/ /^[[:blank:]]*#/d' /etc/fstab
sed: -e expression #1, char 8: unknown command: `/'

我的 sed 命令需要改进什么?

答案1

您搜索的语法是:

sed '/data/d ; /^[[:blank:]]*#/d' /etc/fstab

分号分隔两个命令。

如果要在两个条件之间进行逻辑与运算,可以使用awk命令(不知道sed

awk '!/^[[:blank:]]*#/ || !/data/ {print}' /etc/fstab

相关内容