如何按列对文件内容进行排序?

时间:2009-07-07 10:18:12

标签: linux file sorting


我有一个文件,它有多个列,空格分隔。 e.g:

data1             data2          data3                data4
val1              val2            val3                  val4 

我需要根据不同列中的值对文件进行排序,有时基于第2列的值,有时基于col2的值,依此类推。

我想到了sort命令,但无法弄清楚如何使用它来完成此任务。

感谢名单,

3 个答案:

答案 0 :(得分:10)

如果你放弃分类就很容易:

sort -k 1 original > by_col_1
sort -k 2 original > by_col_2

答案 1 :(得分:2)

Sort具有对“keys”的内置理解,这是用于进行比较的行的一部分。默认情况下,键是整行,但可以使用-k选项更改:

  

示例:要对第二个字段进行排序,请使用--key=2,2' ( - k 2,2')。

默认情况下,键由非空白字符和空白字符之间的转换分隔。

答案 2 :(得分:0)

要对文件进行就地排序,请尝试使用vim-way:

$ ex -s +'%!sort -k1' -cxa file.txt

或者使用-o

sort -k1 in.txt -o out.txt参数