如何按多列排序?

kjo*_*kjo 18 sort

我有一个制表符分隔的文件,我想按第 9、14 和 16 列对它进行排序。我的意思是,所有在第 9 列一致的行都应按第 14 列排序,其中,那些也同意第 14 列应按第 16 列排序。(所有列应升序排序,但前两列应按字母顺序排序,其余一列应按数字排序。)

我尝试了各种形式的 ( gnu) sort,但没有得到所需的排序顺序。手册页没有帮助。谁能告诉我实现上述排序的正确咒语?

Sté*_*las 44

sort -t '\t' -k9,9 -k14,14 -k16,16n
Run Code Online (Sandbox Code Playgroud)

(请记住,您需要指定排序键的开始位置和结束位置,否则(如使用-k9而不是时-k9,9)它们在行尾结束)。

  • +1 用于显示 `-k16,16n`。我不知道如何将 `-n` 或 `-r` 附加到特定列。这给我指明了方向:) (5认同)