WLi*_*den 15 unix sorting field
我正在尝试按如下方式对文件进行排序:
col1(升序)col2(降序)col3(升序)col4(降序)
我想使用-k
命令,而不是+-
语法.我已经想出如何使用旧语法:
sort -t " " +0 -1 +2 -3 +4r testfile
Run Code Online (Sandbox Code Playgroud)
但这很难直观.我还没有想出使用该-k
选项的正确方法.谢谢.
这是测试文件:
5 3 2 9
3 4 1 7
5 2 3 1
6 1 3 6
1 2 4 5
3 1 2 3
5 2 2 3
Run Code Online (Sandbox Code Playgroud)
结果:
1 2 4 5
3 4 1 7
3 1 2 3
5 3 2 9
5 2 2 3
5 2 3 1
6 1 3 6
Run Code Online (Sandbox Code Playgroud)
pax*_*blo 28
你需要一个:
sort --key=1,1 --key=2,2r --key=3,3 --key=4,4r
sort -k1,1 -k2,2r -k3,3 -k4,4r
Run Code Online (Sandbox Code Playgroud)
如下面的记录:
pax$ echo '5 3 2 9
3 4 1 7
5 2 3 1
6 1 3 6
1 2 4 5
3 1 2 3
5 2 2 3' | sort --key=1,1 --key=2,2r --key=3,3 --key=4,4r
1 2 4 5
3 4 1 7
3 1 2 3
5 3 2 9
5 2 2 3
5 2 3 1
6 1 3 6
Run Code Online (Sandbox Code Playgroud)
-n
如果您希望将它们视为正确的数字(可变长度),请记住提供该选项,例如:
sort -n -k1,1 -k2,2r -k3,3 -k4,4r
Run Code Online (Sandbox Code Playgroud)