如果值不为 TRUE 或 FALSE,则删除属性行

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

我的输入文本具有属性值对。我想删除没有 TRUE 或 FALSE 值的行。

hasmailbox: TRUE  
hasmailbox: FALSE  
hasmailbox: SS1234  
hasmailbox: me_c1@mybox  
hasmailbox: 04  

我可以轻松地用核武器攻击只有数字的行:

/^hasmailbox:.[0-9]\+/d  

捕获组似乎是朝着正确方向迈出的一步,但它们并不按照我指定的方式工作:

/^hasmailbox: (TRUE|FALSE)$/!d

但我想要一个更完整的解决方案,仅删除具有此特定属性名称的行,这些行不具有仅“TRUE”或“FALSE”的值。

regex sed
1个回答
0
投票

使用多次打印操作,而不是删除。打印任何不以

hasmailbox:
开头的行。第二个打印以
hasmailbox:
开头并以
TRUE
FALSE
结尾的任何行。

sed -n -E -e '/^hasmailbox:/!p' -e '/^hasmailbox: (TRUE|FALSE)$/p'
© www.soinside.com 2019 - 2024. All rights reserved.