bash - 在 awk 中结合 if 和 NR

标签 bash awk

在过去的几个小时里,我一直在尝试用 awk 解决这个愚蠢的问题,但到目前为止还没有成功。 我了解如何绘制每一行,例如:

awk 'NR%2' file

而且我还了解如果一列在特定范围内如何打印基于列的文件,例如:

awk '{if ($1 > 'yourvalue') print}' file

我不太明白如何将两者结合起来。 在实践中,如果我将文件组织为:

1 3 6 8
2 8 4 5
3 9 8 7
4 7 3 5
5 7 3 6
6 2 4 6
7 1 4 7
8 3 2 1
9 7 5 3
10 4 5 6
11 8 2 5

我怎样才能得到,例如:

1 3 6 8
3 9 8 7
5 7 3 6
7 1 4 7
8 3 2 1
9 7 5 3
10 4 5 6
11 8 2 5

因此,如果第 1 列小于 7,则每两行返回一次,并正常打印其余部分。 我试图将所有内容组合在一行中,但总是出错。

最佳答案

您可以反转第二个条件并使用 OR 条件将它们组合起来:

awk 'NR%2 || $1>=7' file
1 3 6 8
3 9 8 7
5 7 3 6
7 1 4 7
8 3 2 1
9 7 5 3
10 4 5 6
11 8 2 5

关于bash - 在 awk 中结合 if 和 NR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33196894/

相关文章:

python - 删除重复项但保留序列的第一个和最后一个记录

linux - 使用 awk 搜索模式并从日志文件中打印接下来的 15 行

bash - 如何在单个命令行中运行包含多个语句的 shell 脚本?

bash - 如何执行 bash shell 函数

linux - 让 bash 提示删除相关的点文件

bash - noop [ :] in bash? 的用例是什么

python - 如何使用 awk 或 sed 分割日志文件。替换 python 脚本

bash - 语法错误 : unexpected end of file when editing code within here documents with emacs. 使用 nano 工作正常

linux - 如何排除第一列和第二列具有相同值的行?

linux - linux中的数据操作