我有以下名为“info”的文件:
White:73:Mars:1543:Manuel
Green:17:Jupiter:1968:Sebastian
Blue:24:Venus:1970:Anna
Red:35:Neptune:1122:Javier
Yellow:135:Earth:1234:Raymond
我需要使用cut
andsort
来仅显示已排序的带有平面和名称的列。这意味着我必须留下:
Earth:Anna
Jupiter:Javier
Mars:Manuel
Neptune:Raymond
Venus:Sebastian
我尝试使用
cut -d: -f3,5 info | sort -t: -k1,1 -k2,2
,但它只对第一列而不是第二列进行排序。
我也尝试过
cut -d: -f3,5 info | sort -t: -k1,1 -k2,2 | sort -t: -k2,2
,但这仅对第二列进行了排序。
任何和所有的帮助表示赞赏
单独对列进行排序:
由于结果由两个单独排序的数据列组成,因此需要对 进行两次调用
sort
,每次调用都有一组单独的数据。nezabudka的回答显示了如何在理解进程替换的 shell 中做到这一点:
以上假设您要将输出保存到名为
outfile
.在不理解进程替换的 shell 中(您在问题中没有提到特定的 shell),可以使用中间文件分两步执行此操作:
第一个管道创建行星排序名称的初始列。它将排序后的数据重定向到文件
outfile.tmp
。第二个管道以与第一个管道类似的方式创建第二个列,并将其附加到第一个使用paste
. 然后我们删除中间文件。使用gawk和它的内置数组排序功能,我们只需要一次通过文件。
输出