排序多个选项卡但忽略空格

时间:2011-07-07 09:10:00

标签: bash unix sorting command-line command-line-interface

我有一个这样的数据文件(\ t代表制表符):

short line\t    \t    \t    \t    \t    3
very long line with lots of text\t\t    2

我如何使用sort对第二列进行排序?换句话说,我想将分隔符设置为多个制表符,但不是空格。

3 个答案:

答案 0 :(得分:1)

似乎sort的字段分隔符必须是单个字符,因此该命令:

sort -t $'\t' -k2 file

不会将多个标签作为单个分隔符处理:它会为两个行排序空的第二个字段。

此命令将成功找到第二个字段,但它会修改文本:

tr -s '\t' < file | sort -t $'\t' -k2

请注意,tr将2个字符的字符串“\ t”解释为制表符,而sed -t则不会。只是不清楚如何实现不同的命令。

答案 1 :(得分:0)

sort -k2 -t'        ' test.txt

为我开箱即用。在bash中以{kbd> C-v Tab ' '内输入TAB

答案 2 :(得分:0)

使用 -t 参数完成将字段分隔符设置为其他内容。但是传递制表符可能很棘手,因此解决方案可能如下所示:

  

sort -t“$(echo -e'\ t')” - k 2 file.txt