Bash排序和多字符选项卡错误

时间:2014-07-05 15:35:04

标签: linux bash sorting

我有以下表格的数据

C1510438;;C0220832;;2
C0026030;;C0034693;;1
C1257960;;C0007452;;1
C0061461;;C0027922;;2
C0011744;;C0037494;;3
C0014180;;C0034493;;3

当我尝试对第3个字段进行排序时,该命令将返回错误

sort -t ';;' -k 3 -r -n -o output.txt input.txt
sort: multi-character tab `;;'

我也尝试用

sort -t $';;' -k 3 -r -n -o output.txt input.txt

但该命令返回相同的错误。

知道该怎么做?

2 个答案:

答案 0 :(得分:5)

-t选项需要一个分隔符,但是你给它两个。做你想做的事情的方法是考虑分隔符只有一个;,因此第三列将成为第五列:

sort -t ';' -k 5 -r -n -o output.txt input.txt

答案 1 :(得分:2)

由于-t选项需要单个分隔符,因此处理此问题的一种好方法是使用替换工具临时用新分隔符替换分隔符,进行排序,然后恢复原始分隔符(s)进一步处理所需。我有一个使用","的文件。作为我可以暂时替换为|的分隔符(管道),做我的排序,然后恢复","作为分隔符。