我有一个文件,它有多个列,空格分隔。
e.g:
data1 data2 data3 data4 val1 val2 val3 val4
我需要根据不同列中的值对文件进行排序,有时基于第2列的值,有时基于col2的值,依此类推。
我想到了sort命令,但无法弄清楚如何使用它来完成此任务。
感谢名单,
答案 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
参数