我有一个这样的数据文件(\ t代表制表符):
short line\t \t \t \t \t 3
very long line with lots of text\t\t 2
我如何使用sort对第二列进行排序?换句话说,我想将分隔符设置为多个制表符,但不是空格。
答案 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