2015-06-04 37 views
0

如何使用sort命令对!!分隔记录进行排序?多字符分隔排序

用于File1中

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 

结果:

sort: multi-character tab ‘!!’ 

为什么它不工作?

+0

它正在做什么?给出错误?发布实际输出。 –

+0

更新......... – bongboy

回答

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 
+1

但是如果数据有'!'在里面呢? – bongboy

+1

@bongboy:显示数据。 – choroba

+1

@anubhava谢谢.. – bongboy