使用 awk 从平面文件中提取坏记录

使用 awk 从平面文件中提取坏记录

需要一个脚本来提取文件中包含多于指定列的行awk吗?

答案1

$ awk 'NF > 10 { print NR }' data.in

这将打印行号(实际上是记录数字,但由于默认情况下一行是一条记录,所以没有区别)每行包含超过 10 个字段。默认情况下,字段是由空格分隔的字符串,如果有其他分隔符,请使用-F(-F ','代替逗号):

$ awk -F ',' 'NF > 10 { print NR }' data.in

如果您想查看行而不是行号,那就更简单了:

$ awk 'NF > 10' data.in

答案2

如果您的问题是:如何从列数超过“最大”的文件中打印行,这是一种方法:

awk -v max=9 'NF > max' your-file-here

传入您想要指定的 max 值(此处为 9)。

答案3

如果提取你的意思是删除你可以使用awk

$ awk 'NF < 10' my-file.in > my-file.out

分解

NF是一个 awk 变量,它显示当前正在处理的行中有多少个字段。

< 10如果 NF 小于 10,它将打印该行。

my-file.in输入文件。

> my-file.out将输出重定向到新文件。

如果您想了解有关 awk 的更多信息,它是内置的,我发现内置 awk 变量的布局非常漂亮这里

相关内容