多字符分隔排序

时间:2015-06-04 12:20:34

标签: bash sorting unix

如何使用catch(Exception e) { } catch(IOException e { } 命令对!!分隔的记录进行排序?

for File1

sort

预期产出

1!!2!!3
2!3!!3!!1
3!!2!!2

然后

2!3!!3!!1
3!!2!!2   
1!!2!!3

结果:

sort -t \!\! -k 3 file1

为什么它不起作用?

1 个答案:

答案 0 :(得分:1)

sort -t中不允许使用多字符分隔符,但您可以使用:

sort -t '!' -k1 file
1!!b!!c
2!!f!!w
4!!e!!e

编辑:如果!可以存在于数据中,您可以使用此技巧:

sed 's/!!/\x06/g' file | sort -t $'\x06' -k1 | sed 's/\x06/!!/g'
1!!b!!c
2!!f!!w
4!!e!!e

EDIT2:要在单一命令中执行此操作,请使用awk

awk -F '!!' -v k=1 '{a[$k,$0]=$0} 
   END{asort(a, b, "@ind_num_asc"); for (i in b) print b[i]}' file