sort排序的问题。

sh/bash/dash/ksh/zsh等Shell脚本
回复
tester2212
帖子: 2
注册时间: 2013-04-04 22:27
系统: win7

sort排序的问题。

#1

帖子 tester2212 » 2013-04-04 22:45

关于排序的一个问题,搞了好几天没搞定,希望各位大神指教! 不胜感激!


问题描述: 有一个文件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
头像
needle
帖子: 78
注册时间: 2009-12-01 13:34

Re: sort排序的问题。

#2

帖子 needle » 2013-04-05 0:20

代码: 全选

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才是王道!
myshell^_^
xfce4.10最好用了……
舒适的滚轮升起焦点设计,大量快捷键,alt移动,糟糕的桌面图标……
珍爱生命,LFS 三思~
tester2212
帖子: 2
注册时间: 2013-04-04 22:27
系统: win7

Re: sort排序的问题。

#3

帖子 tester2212 » 2013-04-06 0:53

:em11 十分感谢needle, 我一直在考虑用sort 思维固化了。
回复