从可变列大小的文本文件中提取出符合多个条件的行

问题描述:

从下面的文本文件中,如果行符合条件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的?

预先感谢您!

+3

请在解决问题的尝试自己发布之前。 – 2015-02-11 15:51:24

+2

这简直太可笑了。快速查看任一手册页将提供足够的信息来完成此操作。 – 2015-02-11 15:53:52

使用GNU AWK的字边界:

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

\>创建一个字的边界,以便它不匹配JacksonBillyEd的意见建议。

+1

'\ y'也是gawk特有的,请参阅http://www.gnu.org/software/gawk/manual/gawk.html#GNU-Regexp-Operators。别客气。 – 2015-02-11 17:28:52

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

编辑:上面所说的是做应用正则表达式匹配在模式A =杰克和C =比尔任何线路,一旦属实,打印列1和2

+0

关于这个问题如何回答问题的一个小背景将会使它对社区更有用。 – Matt 2015-02-12 02:25:26

+0

在答案中多一点描述? – repzero 2015-02-12 02:27:37

+0

@马特..感谢您的提示 – repzero 2015-02-12 03:15:00