Linux

加入兩個已排序的文件會出現錯誤: join: <file>:112855: is not sorted:

  • August 8, 2020

我想在linux中將一個變數從一個文件合併到另一個文件。第一個變數包含我要合併文件的名稱。

我已經使用 -f 和 -k 對兩個文件進行了排序: sort -f -k 1,1 SCZ.N.tmp&gt; SCZ.N.tmp.sortedsort -f -k 1,1 1kg.tmp &gt; 1kG.ref_file.sorted

但是,當我使用此命令加入兩個文件時:join -1 1 -2 1 SCZ.N.tmp.sorted 1kG.ref_file.sorted&gt; SCZ.freq.joined

我不斷收到錯誤 ’ join: SCZ.N.tmp.sorted:112855: is not sorted: chr1_100002155_D D I6 0.995112 0.0184 0.7897 87016 ’ 儘管如此,連接仍在繼續,大部分被合併。但是,我不確定我是否會因為文件之間的不匹配而失去一小部分案例,或者是因為對這些文件進行排序時出現問題。

有人知道我做錯了什麼嗎?我能做些什麼來避免這個錯誤?謝謝!

我也試過:LANG=en_EN sort -f -k 1,1 SCZ.N.tmp&gt; SCZ.N.tmp.sorted2LANG=en_EN sort -f -k 1,1 1kg.tmp &gt; 1kg.tmp.sorted2,然後加入使用:LANG=en_EN join -1 1 -2 1 SCZ.N.tmp.sorted2 1kg.tmp.sorted2&gt; SCZ.freq.joined。但這並沒有解決它。

您正在使用 -f 選項對文件進行排序,作為與大小寫無關的鍵。

但是,join 需要按正常排序順序排列的鍵。

您應該將 -i 選項添加到命令行以進行連接,以使其忽略大小寫差異。

或者,在這兩種類型中都省略 -f 選項。

編輯:還在這裡找到了另一種可能性。對於排序和連接,欄位分隔符需要相同。看起來 sort 和 join 的預設值都是空格,但它可能是下一個障礙。

引用自:https://unix.stackexchange.com/questions/603359