GNU/Linux >> Znalost Linux >  >> Linux

Linux – spojení dvou seřazených souborů dává chybu:Připojit::112855:Není seřazeno:?

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.


Linux
  1. Spojení více polí v textových souborech na Unixu

  2. Jak najít textové soubory, které neobsahují text v Linuxu?

  3. Jak spojit dva soubory CSV?

  1. Opravit chybu FirewallD neběží na Linux Mint 12

  2. Kde je dočasný adresář v Linuxu?

  3. Jak mohu spojit dvě pojmenované roury do jednoho vstupního proudu v linuxu

  1. Jak opravit chybu Rust „linker ‚cc‘ nenalezen“ v systému Linux

  2. Jak opravit chybu Příkaz nenalezen v Linuxu

  3. Spravujte adresář Linux /tmp jako šéf