Egy tetszőlegesen megadott könyvtárban lévő összes tetszőleges nevű szöveges fájlban (a belsejében) kellene kicsrélni a regi_sztringet új_sztringre.
Meg lehet ezt úgy oldani, hogy a szöveges fájlokról nem csinálok másolatot?
Vagy másolatot kell csinálni és valahogy igy oldom meg:
cat masolat_fajl | sed 's/regi_sztring/új_sztring/g'>eredeti_fajl
Elsősorban bash megoldás érdekel, természetesen sed, awk, stb. használatával.
- 3368 megtekintés
Hozzászólások
find $hely -type f -exec sed -i 's/alma/korte/g' {} \;
A $hely könyvtárban az összes file-ban kicseréli az "almat" "korte"-re.
--
trey @ gépház
- A hozzászóláshoz be kell jelentkezni
Nagyon szépen köszönöm!
Hamarosan megyek és megveszem Büki András: Unix/Linux héjprogramozás c. könyvét.
Egyszerűen nem lehet ilyen tudatlanul élni! :-{)E
- A hozzászóláshoz be kell jelentkezni
Ez nagyon jó megoldás. Köszi, én is ilyet kerestem.
És hogy lehetne egyetlen sed-del megoldani ezt:
find $hely -type f -exec sed -i 's/alma/korte/g' {} \;
find $hely -type f -exec sed -i 's/narancs/banan/g' {} \;
Tehát hogy a find
ne nyálazza kétszer végig a $hely
könyvtárat a file-ok után kutatva, hanem egyszerre cseréljen a sed
több string párost.
Üdv.: Cimbi2
- A hozzászóláshoz be kell jelentkezni
Vond össze a két sed-et egybe:
find $hely -type f -exec sed -i 's/alma/korte/g;s/narancs/banan/g' {} \;
--
Elméletileg nincs különbség elmélet és gyakorlat között. Gyakorlatilag van.
- A hozzászóláshoz be kell jelentkezni
Köszi!
Üdv.: Cimbi2
- A hozzászóláshoz be kell jelentkezni