简体   繁体   English

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

[英]extract lines matching multiple conditions from variable column sized text file

From a text file as example below, I'd like to print column 1 and 2 value if the line satisfy the condition of A=Jack and C=Bill. 从下面的示例文本文件中,如果行满足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

So expected result is: 因此,预期结果是:

1   123
1   483  

How do I accomplish this with either awk or grep? 如何使用awk或grep完成此操作?

Thank you in advance!! 先感谢您!!

Using GNU awk for word boundary: 使用GNU awk作为单词边界:

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

\\> creates a word boundary so that it doesn't match Jackson or Billy as Ed suggested in the comments. \\>创建一个单词边界,以使其与Ed在注释中建议的JacksonBilly不匹配。

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM