Gawk / Grep - 如果不包含3列,则删除生命

时间:2017-05-13 08:07:53

标签: unix awk grep cygwin gawk

好的,我有,例如,

Email:Phone:Name
Email2:Phone2:Name2

(3栏)

但是有些行只包含2列示例

Email3:Phone3

通知#3不包含名称/第3列

问题是如何删除仅包含2列的行。

2 个答案:

答案 0 :(得分:5)

使用NF作为字段分隔符,按字段数:进行过滤:

awk -F: 'NF == 3' file

也就是说,NF == 3是一个过滤器,匹配有3个字段的行(NF包含当前行中的字段数)。对于与此过滤器匹配的行,将执行默认命令print, 得到你想要的输出。

答案 1 :(得分:0)

sed 方法:

sed '/^[^:]*:[^:]*$/d' file

d - 删除仅包含由:

分隔的2个字段的行