【问题标题】:extract lines matching multiple conditions from variable column sized text file从可变列大小的文本文件中提取匹配多个条件的行
【发布时间】:2015-04-12 01:40:34
【问题描述】:

从如下示例的文本文件中,如果该行满足 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 完成此任务?

提前谢谢你!!

【问题讨论】:

  • 发帖前请尝试自己解决问题。
  • 这非常简单。快速浏览任一手册页将提供足够的信息来执行此操作。

标签: bash awk substring


【解决方案1】:

将 GNU awk 用于单词边界:

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

\> 创建一个单词边界,使其与 cmets 中建议的 Ed 不匹配 JacksonBilly

【讨论】:

【解决方案2】:
awk '/A=Jack.* C=Bill.*/{print $1,$2}' file

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

【讨论】:

  • 关于如何回答这个问题的一些背景信息将使它对社区更有用。
  • 答案中的更多描述?
  • 这出现在低质量队列中。大概是因为当时它只是一个代码答案
猜你喜欢
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
  • 2014-09-11
  • 1970-01-01
  • 2012-11-09
  • 2021-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多