我正在尝试查找文件中的所有行/行号,其中一行中的列数!= 25(文件由pipe (|)
分隔。在理想情况下,应该有25列每一行,我想找到实际上比25更多(可能更少)的行号。
我尝试使用以下命令
cat filename|awk -F"|" 'NF != 25 {print NR}' > outputfile
主要关注的是源文件是400 GB,因此命令运行时间超过2小时且未完成。
有没有其他方法可以快速实现同样的目标。
答案 0 :(得分:1)
我没有看到你的原始命令有什么问题(如果你正在查找列号,而不是列数,在这种情况下请参阅@ EdMorton的回答低于:),除了无用的cat
。
$ time awk -F\| 'NF != 25 {print NR}' my_350_gb_file > /dev/null
real 0m13.685s
user 0m13.512s
sys 0m0.172s
如果您在屏幕上打印这些行号,那么可能需要一段时间。