分页: 1 / 1

sort排序的问题。

发表于 : 2013-04-04 22:45
tester2212
关于排序的一个问题,搞了好几天没搞定,希望各位大神指教! 不胜感激!


问题描述: 有一个文件a.txt,内容如下:


host@:/opt/folder/file1 1 11 111 /opt/folder/file1

host@:/opt/folder/file2 2 22 111 /opt/folder/file2

host@:/opt/folder/file3 3 33 123 /opt/folder/file3



我现在想让以第四列降序重新排序, 但是保证如果有任意2行该列相等的话,不改变它们在文件中出现的先后顺序,也就是对文件中file1, 排序后希望它还在file2前。
我尝试过命令 cat a.txt | sort -nr k 4, 这样不行 虽然可以降序排列,但是会改变相等行在文件的先后次序,原因是
sort 命令会如果在当前列相等的话,会自动比较后面的列。

附上期望排序后结果:
host@:/opt/folder/file3 3 33 123 /opt/folder/file3

host@:/opt/folder/file1 1 11 111 /opt/folder/file1

host@:/opt/folder/file2 2 22 111 /opt/folder/file2

Re: sort排序的问题。

发表于 : 2013-04-05 0:20
needle

代码: 全选

for field in $(cat a.txt|awk '{print $4}'|sort -nr|uniq)
do
cat a.txt|awk '{if($4=='${field}')print $0}'
done
:em11
加油,sed与awk才是王道!

Re: sort排序的问题。

发表于 : 2013-04-06 0:53
tester2212
:em11 十分感谢needle, 我一直在考虑用sort 思维固化了。