【发布时间】:2010-11-08 15:44:48
【问题描述】:
我有一个文件,它有多个列,空格分隔。
例如:
我需要根据不同列中的值对文件进行排序,即有时基于列 1 的值有时基于 col2 的值等等。
我想到了 sort 命令,但不知道如何使用它来完成此操作。
谢谢,
【问题讨论】:
-
所以您想找到正确的 Unix 命令或以编程方式执行它,比如 C?
我有一个文件,它有多个列,空格分隔。
例如:
我需要根据不同列中的值对文件进行排序,即有时基于列 1 的值有时基于 col2 的值等等。
我想到了 sort 命令,但不知道如何使用它来完成此操作。
谢谢,
【问题讨论】:
如果你放弃就地排序很容易:
sort -k 1 original > by_col_1
sort -k 2 original > by_col_2
【讨论】:
排序具有对“键”的内置理解,“键”是用于进行比较的行的一部分。默认情况下,键是整行,但可以使用-k 选项进行更改:
示例:要对第二个字段进行排序,请使用
--key=2,2' (-k 2,2')。
默认情况下,键由非空白字符和空白字符之间的过渡分隔。
【讨论】:
要对文件进行就地排序,请尝试 vim-way:
$ ex -s +'%!sort -k1' -cxa file.txt
也可以使用-o 参数,如sort -k1 in.txt -o out.txt
【讨论】: