Kirjoittaja Aihe: Tiedoston string replace? [RATKAISTU]  (Luettu 2135 kertaa)

peran

  • Vieras
Tiedoston string replace? [RATKAISTU]
« : 08.03.07 - klo:19.21 »
Vanhoille parroille lieneen triviaalia, mutta yritin, enkä onnistunut.

Ilmeisesti sed:llä jotenkin tehdään...

No, aikaisempi räpellykseni.

Koodia: [Valitse]
exec 3<> _bkexpn${lkm}.ps
Lines="0";
while read line <&3
do {
    if  [ "$Lines" -eq "2" ]
    then echo "tähän haluaisin oman rivini" >> _bkexp${lkm}.ps
    else echo $line >> _bkexp${lkm}.ps
    fi
     (( Lines++ ));                   #  Incremented values of this variable
                                      #+ accessible outside loop.
                                      #  No subshell, no problem.
   }
done
exec 3>&-

Tämä toimii muuten, mutta muuttaa matkalla merkkejä, koska echo $line tai echo "$line" muuttaa merkkejä, mikäli jotkin ehdot täyttyvät.

Käyttiksenä feisty.
« Viimeksi muokattu: 09.03.07 - klo:02.44 kirjoittanut peran »

peran

  • Vieras
Vs: Tiedoston string replace?
« Vastaus #1 : 08.03.07 - klo:21.53 »
Vastaampas itse, kun löysin esimerkin sed:stä.

Koodia: [Valitse]
sed -e "s/etsittavamrkjono/korvaavamrkjono/" input.txt >output.txt
Tosin huomioitavaa, että etsittävä merkkijono on regex:piä, joten aivan kaikki merkit eivät suoraan käy.

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: Tiedoston string replace?
« Vastaus #2 : 09.03.07 - klo:00.27 »
Lisätäänpä vielä sellainen asia että tuo korvaa vain ensimmäisen vastaavuuden jokaiselta riviltä. Jos halutaan että kaikki rivillä olevat vastaavuudet korvataan niin loppuun pitää lisätä g.

Koodia: [Valitse]
sed -e "s/etsittavamrkjono/korvaavamrkjono/g" input.txt >output.txt