awk - 跳过条件的最后一行

时间:2015-03-21 18:31:37

标签: awk

当我为此撰写答案question时,我使用了以下内容:

something | sed '$d' | awk '$1>3{print $0}'

e.g。

  • 仅打印第1个字段大于3(awk)的行
  • 但省略了最后一行sed '$d'

这对我来说似乎有点重复工作,当然只有awk才可以执行上述操作 - 没有sed

我是一个笨蛋 - 所以,有人可以提出解决方案吗?

1 个答案:

答案 0 :(得分:2)

这是你可以做到的一种方式:

$ printf "%s\n" {1..10} | awk 'NR>1&&p>3{print p}{p=$1}'
4
5
6
7
8
9

基本上,打印上一个行的第一个字段,而不是当前字段。


正如Wintermute在评论中正确指出的那样(感谢),为了打印整行,您可以将代码修改为:

awk 'p { print p; p="" } $1 > 3 { p = $0 }'

如果第一个字段大于3,则仅将行内容的内容分配给p