Chtěl bych sloučit proměnnou z jednoho souboru do druhého v linuxu.
První proměnná obsahuje název, na kterém chci sloučit soubory.
Oba soubory jsem seřadil pomocí obou -f a -k:sort -f -k 1,1 SCZ.N.tmp> SCZ.N.tmp.sorted
a sort -f -k 1,1 1kg.tmp > 1kG.ref_file.sorted
Když však spojím oba soubory tímto příkazem:join -1 1 -2 1 SCZ.N.tmp.sorted 1kG.ref_file.sorted> SCZ.freq.joined
Stále se mi zobrazuje chyba ‘připojit:SCZ.N.tmp.sorted:112855:není seřazeno:chr1_100002155_D D I6 0,995112 0,0184 0,7897 87016 ‘ Nicméně spojení pokračuje a většina je sloučena. Nejsem si však jistý, zda přicházím o malou část případů kvůli nesouladu mezi soubory, nebo proto, že se něco pokazí při řazení těchto souborů.
Ví někdo, co dělám špatně? A co mohu udělat, aby se tato chyba nezobrazila?
Děkuji!
Zkoušel jsem také:LANG=en_EN sort -f -k 1,1 SCZ.N.tmp> SCZ.N.tmp.sorted2
a LANG=en_EN sort -f -k 1,1 1kg.tmp > 1kg.tmp.sorted2
, s následným spojením pomocí:LANG=en_EN join -1 1 -2 1 SCZ.N.tmp.sorted2 1kg.tmp.sorted2> SCZ.freq.joined
. Ale tím se to nevyřešilo.
Přijatá odpověď:
Soubory třídíte pomocí volby -f jako klíče nezávislé na velikosti písmen.
Funkce join však očekává klíče v normálním seřazeném pořadí.
Měli byste přidat volbu -i do příkazového řádku pro spojení, aby ignoroval rozdíly ve velikosti písmen.
Případně vynechejte volbu -f z obou typů.
Edit:našel jsem zde také další možnost. Oddělovače polí musí být identické pro řazení a spojení. Vypadá to, že výchozí hodnoty pro řazení a spojení jsou prázdné, ale to může být další překážka.