'tr'-avainsanan arkisto

[Ratkaisu] Skandinaavisten kirjainten korvaaminen tiedostonimissä

Lähtökohta
Minulla on joukko tiedostoja joiden nimissä on ä- ja ö-kirjaimia. Kaikki tiedostonimet koostuvat yksinomaan pienistä kirjaimista, eli kirjainmerkeistä a-ö. Haluan muuntaa nimet siten, että ä:t korvautuvat a-kirjaimilla ja ö:t o-kirjaimilla. Aion käyttää muuntamiseen tr-komentoa.
Ongelma

Tr-komento tulkitsee sille antamiani skandinaavisia kirjaimia sisältäviä muunnossääntöjä väärin ja ennalta-arvaamattomalla vaikuttavalla tavalla. Seuraavassa on tästä esimerkkejä:

$ echo tiedostonnimi-jossa-on-ä | tr ä a
tiedostonnimi-jossa-on-aa
$ echo tiedostonnimi-jossa-on-ää | tr ä a
tiedostonnimi-jossa-on-aaaa
$ echo tiedostonnimi-jossa-on-äö | tr ä a | tr ö o
tiedostonnimi-jossa-on-aaao
$ echo tiedostonnimi-jossa-on-öö | tr ä a | tr ö o
tiedostonnimi-jossa-on-aoao
$ echo tiedostonnimi-jossa-on-öä | tr ä a | tr ö o
tiedostonnimi-jossa-on-aoaa
Ongelman syy
Tr-komento ei tue komentotulkissani käytössä olevaa UTF-8 -koodausta.
Ratkaisu

Käytän tr-komennon sijasta sed-komentoa skandinaavisten kirjainten muuntamiseen, seuraavalla tavalla:

for file in *ä*; do mv $file `echo $file | sed -e 's/ä/a/g'`; done
for file in *ö*; do mv $file `echo $file | sed -e 's/ö/o/g'`; done

[Ratkaisu] Rivinvaihtomerkkien korvaaminen välilyönneillä syötetiedostossa

Lähtökohta

Minulla on testi.txt -niminen tiedosto, joka sisältö on seuraavassa:

Yksi
kaksi
kolme

Aion tulostaa tiedoston sisällön komentorivitulkissa.

Ongelma

Haluan, että tulosteessa rivinvaihtomerkkien paikalla on välilyöntimerkit, eli tuloste näyttää seuraavalta:

Yksi kaksi kolme
Ratkaisu

Tulostan tiedoston sisällön cat-komennolla ohjaten sen putkeen, ja putken toiseen päähän kytken tr-komennon parametreilla, jotka korvaavat rivinvaihtomerkit välilyöntimerkeillä tulosteessa:

cat testi.txt | tr "\n" " "

Tällöin tiedostoni sisältö tulostuu haluamallani tavalla.