Unix Shell - 从非常大的文件中查找列数

时间:2017-03-22 15:20:57

标签: shell awk

我正在尝试查找文件中的所有行/行号,其中一行中的列数!= 25(文件由pipe (|)分隔。在理想情况下,应该有25列每一行,我想找到实际上比25更多(可能更少)的行号。

我尝试使用以下命令

cat filename|awk -F"|" 'NF != 25 {print NR}' > outputfile

主要关注的是源文件是400 GB,因此命令运行时间超过2小时且未完成。

有没有其他方法可以快速实现同样的目标。

1 个答案:

答案 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

如果您在屏幕上打印这些行号,那么可能需要一段时间。