【问题标题】:extract columns from multiple text files with awk使用 awk 从多个文本文件中提取列
【发布时间】:2012-06-09 09:27:34
【问题描述】:

我正在尝试根据 column2 的值提取 column1。只有当 column2 ≤30 且大于 5 时,我才想打印 column1 的值。

我还需要根据输出打印 column1 的值的总数。如何使用来自多个文本文件的 awk 执行此操作?

文本文件示例如下所示。

col1   col2  

aa     25
bb     4
cc     6
dd     23
aa     30

输出将是

aa
cc
dd
aa

Total number of aa is 2
Total number of cc is 1
Total number of dd is 1

【问题讨论】:

  • 和往常一样,请发布您迄今为止尝试过的内容...

标签: awk


【解决方案1】:

这样的东西可以帮助您入门:

{ if ($2 <= 30 && $2 > 5) {
    print $1
    tot[$1] += 1 }
}
END {

  for (i in tot) {
    print "Total number of", i, "is", tot[i]
  }
}

输出:

$ awk -f i.awk input
aa
cc
dd
aa
Total number of aa is 2
Total number of cc is 1
Total number of dd is 1

【讨论】:

  • +1 - 你也可以这样做:$2 &gt; 5 &amp;&amp; $2 &lt;= 30 {print $1; tot[$1]++}。更改是将下限放在上限的左侧,使用条件作为块选择器而不是使用if,并使用后增量而不是+=
  • 来自我的一位 awk 英雄的良好反馈 :-)
猜你喜欢
  • 2012-08-13
  • 1970-01-01
  • 2019-07-31
  • 2012-08-10
  • 2012-05-12
  • 2012-08-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多