0

抱歉标题含糊,我想不出更好的...

我有2 个制表符分隔的文件,它们的第一列相同(总列数不同)。我想按它们的第一列对这两个文件进行排序。

我想我可以使用它 -t\t 选项或 -k1,12 选项来做到这一点(因为第一列永远不会超过 12 个字符。)这两个选项都会产生相同的(错误的)输出。

即使两个文件具有相同的第一列,它们的排序方式也不同。请注意,在 file1 上我得到23、29、2;file2,我得到2,23,29。

$ head  file1 | sort -t\t | cut -f1
rs1000000
rs10000010
rs10000012
rs10000013
rs10000017
rs10000023
rs10000029
rs1000002
rs10000030

$ head file2 | sort -t\t | cut -f1
rs1000000
rs10000010
rs10000012
rs10000013
rs10000017
rs1000002
rs10000023
rs10000029
rs10000030

我如何对两个文件进行排序,以使第一列在每个文件中的顺序相同? 谢谢!

4

1 回答 1

1
sort -t $'\t' -k 1,1

用于$'\t'将 shell 解释\t为选项卡,因为sort不解析转义序列。用于-k告诉它只对第一个字段而不是整行进行排序。

如果您想在和之间进行排序,您可能还需要-V标志。2010

于 2013-06-28T15:18:31.397 回答