Ubuntu下如何使用awk打印超7列行的文件名及对应行号
列数超7行的筛选实现方案
直接基于awk补充内置变量判断和格式输出即可完成需求,不需要额外搭配其他工具:
- 用到的awk内置变量说明:
FILENAME:当前正在处理的文件名FNR:当前文件内的行号(单文件从1开始计数,跨文件自动重置,比全局累计计数的NR更符合单文件行号的输出需求)NF:当前行按指定分隔符拆分后的字段数,也就是需要判断的列数
基础命令(文件量适中场景)
直接遍历当前目录下所有文件,输出符合文件名-行号格式的结果:
awk -F',' 'NF>7 {print FILENAME "-" FNR}' *
海量文件适配命令(数十万文件场景推荐)
如果直接用*通配符触发「参数列表过长」报错,用find搭配awk调用可以绕开shell参数长度限制,处理大批量文件更稳定:
find . -maxdepth 1 -type f -exec awk -F',' 'NF>7 {print FILENAME "-" FNR}' {} +
如果需要递归遍历当前目录下所有子文件夹的文件,删掉命令里的
-maxdepth 1参数即可
内容的提问来源于stack exchange,提问作者usert4jju7
相关产品推荐
相关产品推荐

