首页 > 解决方案 > 基于图案的打印线

问题描述

我有格式的数据

A  ((!(A1+A2)))
B  (A1A2)
C  (A1+A2)
D  (!(A1+A2)B1)
E  (!A1+!A2)
F  ((A1+A2)+A3+A4)
G  ((A1A2)+(A3A4))

我想要输出为

C  (A1+A2)
F  ((A1+A2)+A3+A4)
G  ((A1A2)+(A3A4))

我想得到只有+

我用了

awk -F' ' '$2 ~ /\+/' file

但这列出了其中包含的所有!+

标签: awkgrep

解决方案


您应该在代码中再添加 1 个条件,如下所示。您已经在检查第二个字段是否包含+在其中添加一个额外的检查,如果它也没有!,那么您应该得到预期的输出。

awk '$2!~/!/ && $2~/\+/'  Input_file

你也不需要使用-F' '选项,因为默认情况下它本身awk使用空格作为所有行的字段分隔符,所以我从建议的代码中删除了它。


推荐阅读