如何确定大型文本文件中的一个或多个列是否已排序或未排序

Wat*_*att 1 unix bash perl cmd

我有超过1GB的大文本文件.该文件有4个由TAB分隔的列.

Col1: Guid
Col2: Date-time (yy-mm-yyyy 0000000000)
Col3: String
Col4: String
Run Code Online (Sandbox Code Playgroud)

我想确定它的一个或多个列是否已排序或未排序.

有没有快速的方法呢?也许使用Perl或一些unix命令?或类似的东西?

我有大型服务器和本地Windows机器上的文件,因此内存或CPU速度或操作系统不是问题.

Chr*_*our 9

只需使用-c选项sort来检查排序顺序,并-k指定在哪一列:

$ sort -c -k2,2 file
sort: file:2: disorder: Col2: Date-time (yy-mm-yyyy 0000000000)
Run Code Online (Sandbox Code Playgroud)

或者-C抑制输出并测试退出代码.您可能还希望根据数据指定排序类型,例如版本排序的-n数字排序等-v.