awk-跳过条件的最后一行

awk-跳过条件的最后一行,awk,Awk,当我写下答案时,我使用了以下内容: something | sed '$d' | awk '$1>3{print $0}' e、 g 仅打印第一个字段大于3(awk)的行 但是省略最后一行sed'$d' 对我来说,这似乎是一个重复的工作,当然只有使用awk——而不使用sed,才能完成上述工作 我是一个工作狂-那么,有人能提出解决方案吗?这里有一种方法可以做到这一点: $ printf "%s\n" {1..10} | awk 'NR>1&&p>3{prin

当我写下答案时,我使用了以下内容:

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

  • 仅打印第一个字段大于3(awk)的行
  • 但是省略最后一行
    sed'$d'
对我来说,这似乎是一个重复的工作,当然只有使用
awk
——而不使用
sed
,才能完成上述工作


我是一个工作狂-那么,有人能提出解决方案吗?

这里有一种方法可以做到这一点:

$ 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

但仅当该行由单个数字组成时,此操作才有效。在OP的例子中,这似乎不是问题,但请允许我保留修改后的版本
awk'p{print p;p=“”}$1>3{p=$0}'
,它根据字段的值选择行。(仍然是+1,因为打印后面的一个当然是解决问题的方法)