Tämä oli muuten hyvä, mutta siinä kävi kuten epäilinkin eli nyt rivinvaihtoa tai välimerkkiä ei ole. Ilmeisesti tämä olisi ollut sitten sopivampi:
find . -name "*.txt" -type f -exec sed -i -e 's/\r/\n/g' {} \;
Olen yrittänyt käsitellä Nordean verkkopankista haettua tapahtumaluetteloa noin, mutta ei toiminut. Tarkoitan kohtaa "sed 's/\r/\n/g'".
Ensinnäkin, se sed-versio joka tulee Ubuntun mukana ei tunnusta \r-merkkiä, kuten nm oikein varoitti. Toiseksi, sedillä ei saa kiinni rivinvaihtoa, koska sed käsittelee inputtia rivi riviltä niin että rivinvaihto ei ole mukana. Jos rivinvaihdon haluaa korvata jollain, sedille pitää erikseen kertoa että input
halutaan lukea yhtenä rivinä, mikä on hirveän ruman näköistä.
Perlillä sen voi tehdä siististi:
perl -pe 's/\r\n//g' < input.txt > output.txt
mutta perl on liian järkäle näin pieneen juttuun.
Eipä yksittäisen tiedoston kanssa huomaa että cpua kuluu, mutta jos tiedostoja on paljon, niin sitten kannattaa nyplätä ja virkata sedin kanssa.
EDIT: Uups. Luin väärin kohdan "sed 's/\r/\n/g'" koska olin juuri ollut käsittelemässä tätä Nordean tapahtumatiedoston tapausta. Tuo "sed 's/\r/\n/g'" toimii jos sed tunnistaa \r:n. Mun tapauksessa siis oli tosiaan eri tilanne: "sed 's/\r\n//g'".