在bash中使用多个分隔符的sort命令

时间:2017-03-07 09:35:47

标签: bash shell

sort -k 2 data.txt

使用-k选项,我们可以指定要比较的字段。但是,字段由空格分隔。如何修改我的命令,以便我可以使分隔符为空格和冒号:':'一起?

例如,

james:ben tom:jamie

有4个字段。

预期投入: 我的data.txt文件:

apple:tiger jack
orange:ant tom
pear:bird james

预期输出:使用带有-k 2

的sort命令
orange:ant tom
pear:bird james
apple:tiger jack

1 个答案:

答案 0 :(得分:2)

如果您找到正确的解决方案,我会感兴趣。我目前对这种情况的解决方法是修改排序输入,然后撤消修改:

printf "1:2 3:4\n2:3 4:1\n3:4 1:2\n4:1 2:3\n" |
  sed 's/:/ :/g' | sort -k 4 | sed 's/ :/:/g'

您可以将-k之后的数字修改为1到4之间的任何数字。输出将是这样的(4):

2:3 4:1
3:4 1:2
4:1 2:3
1:2 3:4