我想在 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.sorted2
和LANG=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 选项。
编辑:还发现了另一种可能性这里。排序和连接的字段分隔符必须相同。看起来排序和连接的默认值都是空格,但这可能是下一个障碍。