Konsenz:
CSV mit RegExp oder sonstwie per Hand parsen ist blöd. 😀
Bash-Script search & replace
![]() Anmeldungsdatum: Beiträge: 1253 |
|
(Themenstarter)
Anmeldungsdatum: Beiträge: 1055 |
das alles steht ja nicht zur diskussion 😛 thema erledigt. |
(Themenstarter)
Anmeldungsdatum: Beiträge: 1055 |
Ok, Script läuft noch nicht korrekt. Hier noch mal kurze Erläuterung: ich habe ein cvs-file, wo je zeile ein wort steht, was durch das 2. wort in dieser zeile ersetzt werden soll. mit dieser csv geh ich alle dateien in einem verzeichnis durch und ersetze das erste wort mit dem zweiten. was nicht funktioniert: in den wörtern sind entweder ein # oder ein . (punkt). diese werden jedoch nicht verglichen, sodass z.b. ein suchwort "#asdf" dazu führt, dass alle ergebnisse "asdf" ersetzt werden UND nach dem replace eine leerzeile eingefügt wird. befehl für das search'n'replace: sed -i "s/$search/$replace/g" $filename kompletter code: while read LINE do search=`echo $LINE | cut -d ";" -f1` replace=`echo $LINE | cut -d ";" -f2 | cut -d " " -f1` for i in $(find . -type f -name "$2" ) do sed -i "s/$search/$replace/g" $i done done < $1 Brauche dringend Unterstützung!!! Vielen Dank & Gruß |
![]() Anmeldungsdatum: Beiträge: 1253 |
*hust*perl!*hust* |
(Themenstarter)
Anmeldungsdatum: Beiträge: 1055 |
och menno - nö... es muss ja auch in einem bash-script möglich sein! aber wenn es schneller geht in perl - immer her damit! stehe damit leider etwas unter zeitdruck... ☹ |
(Themenstarter)
Anmeldungsdatum: Beiträge: 1055 |
Thema ist jetzt endgültig abgehakt. Korrekt funktinoierendes Script: echo -n "search and replace in progress. please wait " while read LINE do search=`echo $LINE | cut -d ";" -f1` rep=`echo $LINE | cut -d ";" -f2 | cut -d " " -f1` replace=${rep:0:(${#rep}-1)} echo -n . for i in $(find . -type f -name "$2" ) do if [ "${search:0:1}" == "." ] then sed -i "s/class=\"${search:1}/class=\"${replace:1}/g" $i fi if [ "${search:0:1}" == "#" ] then sed -i "s/id=\"${search:1}/id=\"${replace:1}/g" $i fi done done < $1 echo " " |
![]() Anmeldungsdatum: Beiträge: 425 |
für sowas gibt es doch awk... und ruby wäre auch noch eine alternative 😉 Gruss – jerik |
(Themenstarter)
Anmeldungsdatum: Beiträge: 1055 |
es funktioniert... 😉 |