从可变列大小的文本文件中提取匹配多个条件的行

时间:2015-02-11 15:47:21

标签: bash awk substring

从下面的示例文本文件中,如果行符合A = Jack和C = Bill的条件,我想打印第1列和第2列值。

1   123 A=Jack  C=Bill  D=Dad
1   423 A=Sue   B=Dad   C=Kirk  D=Pat  
1   483 A=Jack  B=Kirk  C=Bill  D=Bob
2   592 A=Sue   B=Bob   C=Bill
4   312 A=Jack  B=Kirk  C=Dad   D=Sue

所以预期的结果是:

1   123
1   483  

如何使用awk或grep完成此操作?

提前谢谢!!

2 个答案:

答案 0 :(得分:2)

使用GNU awk进行单词边界:

awk '/A=Jack\>/&&/C=Bill\>/ { print $1, $2 }' file

\>会创建一个字边界,使其与评论中建议的JacksonBilly不匹配。

答案 1 :(得分:0)

awk '/A=Jack.* C=Bill.*/{print $1,$2}' file

编辑:上面提到的是使用正则表达式匹配任何具有模式A = Jack和C = Bill的行,一旦为真,则打印第1列和第2列