A dolog egyszerű:
- a for ciklus változólistája idézőjelek nélkül a szeparátort tartalmazó soroknál szétszakad (SPACE) Pl. a "Kovacs Geza|12345|bolond" esetén a for 2db változót kap. Az egyik a Kovacs...
Az ilyen dolgok idézőjelek alkalmazásával passzolhatók, de bonyolult.
- a sed -i tmp állománnyal dolgozik = Sebesség szempontjából ixj esetben olvassa, írja és tmp állományba írja a feldolgozást. Optimális! - És csak gnu sed esetén megy.
A hiba vélhetően a fenti jelenség miatt keletkezik.
- a sed -e pedig ixj esetben kiírja a teljes eredményt, de csak 1db j esetére. Azaz ixjx kiírja...
A sorrendfüggetlen, mezőszeparátorokat pontosan kezelő megoldás az, amit korábban írtam.
Sebesség szempontjából:
- két állomány olvasás
- egy állomány írás + egy mv
- sebesség elég jó: bemenő adat 7.000.000db, kulcs 22.000db, mezőszám 40
futásidőt nem írok, mert megzavarna...