![使用 awk 从平面文件中提取坏记录](https://linux22.com/image/90080/%E4%BD%BF%E7%94%A8%20awk%20%E4%BB%8E%E5%B9%B3%E9%9D%A2%E6%96%87%E4%BB%B6%E4%B8%AD%E6%8F%90%E5%8F%96%E5%9D%8F%E8%AE%B0%E5%BD%95.png)
需要一个脚本来提取文件中包含多于指定列的行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 变量的布局非常漂亮这里。