openSUSEa suomeksi
openSUSE => Asennus ja käyttö => Aiheen aloitti: Owdy - 05.10.2009 - klo:16:52
-
Jos en väärin muista, niin komentorivillä pystyi muokkaamaan kerralla kokonaisen kansion tiedostoja, eli muuttamaan esim kaikki X-kirjaimet Y-kirjaimiksi jne?
-
tr lienee järkevin vaihtoehto, jos kyse on todella X -> Y -tyyppisestä merkkien ”käännöksestä”.
-
En kokeillut tätä mutta periaatteessa pitäisi toimia, eli kokeile johonkin vähemmän tärkeään ensin ;).
sed 's/X/Y/g' *
Eli pitäisi muuttaa ajettavassa hakemistossa olevien tiedostojen kaikki X kirjaimet Y kirjaimiksi.
Edit: Sama asia nopeammin
sed '/X s//Y/g' *
EDIT: joo kotona koneen ääressä huomasin että olen unohtanut -i tosta, eli sed -i plaaplaa ;)
-
Täytyy testata, kiitos!
-
Mutta juuri tuollaisessa muunnoksessa tr on helpompi:
tr x y < tiedosto > uusi_tiedosto
-
tr on vanhaa koulua, se ei ota tiedostoja argumenteiksi joten sinun täytyy käyttää päätettä uudelleen ohjataksesi tiedoston stdin:n. Tämän takia tarvitset <tiedoston. Se ei myös kirjoita tiedostoihin minkä takia sinun täytyy käyttää tmptiedostoa>. Tr haluaa ajatella että kaikki tiedoston käsittely on päätteen tehtävä.
Sed tekee kaiken tämän sisäisesti, se ei editoi tiedostoa itsessään vaan se luo tilapäisen tiedoston jolla se sitten korvaa alkuperäisen. Mutta kaikki tämä on piilotettu käyttäjältä mikä tekee siitä yleisesti ymmärrettävimmän käyttää.
tiedostoille *; tee 'X' 'Y' <"$tiedosto"> tmptiedosto ; mv tmptiedosto "$tiedosto"; valmis
-
tr on vanhaa koulua, se ei ota tiedostoja argumenteiksi joten sinun täytyy käyttää päätettä uudelleen ohjataksesi tiedoston stdin:n.
”Vanhaa koulua” se on sedkin – ei taida ohjelmien iässä olla suurtakaan eroa :) Jos ultramodernisti eli GUIssa haluaa asiat hoitaa, löytyyhän sitä ainakin kfilereplace-niminen työkalu.
Itse pidän tuota uudelleenohjausjuttua hyvänä ihan siksi, että saa samalla näppärästi tehdyksi varmuuskopion.