awk - 跳过条件的最后一行
awk - skip last line for condition
当我为此 question 写答案时,我使用了以下内容:
something | sed '$d' | awk '>3{print [=10=]}'
例如
- 仅打印第一个字段大于 3 的行 (awk)
- 但省略最后一行
sed '$d'
。
这对我来说似乎有点重复工作,当然可以只使用 awk
来完成上述工作 - 没有 sed
?
我是个 awkdiot - 那么,有人可以提出解决方案吗?
这是您可以做到的一种方法:
$ printf "%s\n" {1..10} | awk 'NR>1&&p>3{print p}{p=}'
4
5
6
7
8
9
基本上,打印前行的第一个字段,而不是当前行。
正如 Wintermute 在评论中正确指出的那样(感谢),为了打印整行,您可以将代码修改为:
awk 'p { print p; p="" } > 3 { p = [=11=] }'
如果第一个字段大于 3,这只会将行内容的内容分配给 p
。
当我为此 question 写答案时,我使用了以下内容:
something | sed '$d' | awk '>3{print [=10=]}'
例如
- 仅打印第一个字段大于 3 的行 (awk)
- 但省略最后一行
sed '$d'
。
这对我来说似乎有点重复工作,当然可以只使用 awk
来完成上述工作 - 没有 sed
?
我是个 awkdiot - 那么,有人可以提出解决方案吗?
这是您可以做到的一种方法:
$ printf "%s\n" {1..10} | awk 'NR>1&&p>3{print p}{p=}'
4
5
6
7
8
9
基本上,打印前行的第一个字段,而不是当前行。
正如 Wintermute 在评论中正确指出的那样(感谢),为了打印整行,您可以将代码修改为:
awk 'p { print p; p="" } > 3 { p = [=11=] }'
如果第一个字段大于 3,这只会将行内容的内容分配给 p
。