连接两个已排序的文件会出现错误: join::112855:未排序:

连接两个已排序的文件会出现错误: join::112855:未排序:

我想在 Linux 中将一个变量从一个文件合并到另一个文件。第一个变量包含我想要合并文件的名称。

我已经使用 -f 和 -k 对这两个文件进行了排序: sort -f -k 1,1 SCZ.N.tmp> SCZ.N.tmp.sorted并且sort -f -k 1,1 1kg.tmp > 1kG.ref_file.sorted

但是,当我使用以下命令加入两个文件时:join -1 1 -2 1 SCZ.N.tmp.sorted 1kG.ref_file.sorted> SCZ.freq.joined

我不断收到错误'连接:SCZ.N.tmp.sorted:112855:未排序:chr1_100002155_D D I6 0.995112 0.0184 0.7897 87016' 尽管如此,连接仍在继续,并且大多数已合并。但是,我不确定是否由于文件之间的不匹配而丢失了一小部分案例,或者因为对这些文件进行排序时出现了问题。

有人知道我做错了什么吗?我能做些什么来避免出现此错误?谢谢你!

我也尝试过:LANG=en_EN sort -f -k 1,1 SCZ.N.tmp> SCZ.N.tmp.sorted2LANG=en_EN sort -f -k 1,1 1kg.tmp > 1kg.tmp.sorted2,然后使用: 加入LANG=en_EN join -1 1 -2 1 SCZ.N.tmp.sorted2 1kg.tmp.sorted2> SCZ.freq.joined。但这并没有解决问题。

答案1

您使用 -f 选项对文件进行排序,作为与大小写无关的键。

但是,连接需要按正常排序顺序的键。

您应该将 -i 选项添加到 join 命令行,以使其忽略大小写差异。

或者,从这两种类型中省略 -f 选项。

编辑:还发现了另一种可能性这里。排序和连接的字段分隔符必须相同。看起来排序和连接的默认值都是空格,但这可能是下一个障碍。

相关内容