2017-03-07 34 views
1
sort -k 2 data.txt 

使用-k选项,我们可以指定要比较哪些字段。但是,字段之间用空白分隔。如何修改我的命令,以便我可以将分隔符的空格和冒号':'放在一起?在bash中使用多个分隔符的排序命令

例如,

james:ben tom:jamie 

有4个字段。

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

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

预期输出:使用sort命令与-k 2

orange:ant tom 
pear:bird james 
apple:tiger jack 
+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 
+1

你是Schwarzian变换的典型例子,虽然它可能不是幂等的。一个更强大的解决方案是将排序键提取为一个单独的字段(可能是分隔标签),并在排序后剥离整个第一个字段。 – tripleee

相关问题