繁体   English   中英

awk-跳过条件的最后一行

[英]awk - skip last line for condition

当我为这个问题写答案时,我使用了以下方法:

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

例如

  • 仅打印第一个字段大于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

暂无
暂无

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

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