0

我有以下格式的一些字段

apple   banana   blue   xyz=4;pqr=5;mno=3
lemon   banana   red    xyz=2;pqr=6;mno=7
horse   tiger    green  xyz=3;pqr=2;mno=1

我想按第四列的“pqr”值对它们进行排序,这样我的输出是:

horse   tiger    green  xyz=3;pqr=2;mno=1
apple   banana   blue   xyz=4;pqr=5;mno=3
lemon   banana   red    xyz=2;pqr=6;mno=7

我尝试了以下方法:

猫文件.txt | sort -key=4.2 ,但这不起作用,因为它需要第二个字符进行排序。

4

2 回答 2

1

您可以尝试在制表符分隔的字段中拆分半列分隔的字段

cat file1 | sed 's/;/;\t/g'

apple   banana   blue   xyz=4;  pqr=5;  mno=3
lemon   banana   red    xyz=2;  pqr=6;  mno=7
horse   tiger    green  xyz=3;  pqr=2;  mno=1

...对您的输出进行排序,然后合并您的字段

cat file1 | sed 's/;/;\t/g' | sort --key=5 | sed 's/;\t/;/g'

horse   tiger    green  xyz=3;pqr=2;mno=1
apple   banana   blue   xyz=4;pqr=5;mno=3
lemon   banana   red    xyz=2;pqr=6;mno=7

不是最好的解决方案,但效果很好。

于 2013-01-11T17:00:01.400 回答
1

这可能会奏效。它忽略空白和非打印字符,用于;划分字段,并在第二个字段上排序。

sort -bi -t\; -k2 file.txt
于 2013-01-11T17:04:21.067 回答