[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: viele dateien auf einmal modifizieren



* Leune, Tilman <Tilman.Leune@stadt.lueneburg.de> [021009 19:02]:

> Ich möchte in ca 400 nahezu gleichen konfigurationsdateien eine Zeile
> einfügen respektive aktualisieren
> 
> bedingungen: 
> 
> WENN $alte_befehls_zeile nicht existiert, füge $neue_befehlszeile ein
> vor $Zeile_mit bestimmten_Inhalt.  SONST ersetze &alte_befehls_zeile
> durch $neue_befehlszeile

Ohne Rücksicht auf Performance:

jsa@anna:~/temp$ cat file1
foo
bar
Zeile mit bestimmtem Inhalt
baz
jsa@anna:~/temp$ cat file2
foo
bar
Alte Befehlszeile
baz
jsa@anna:~/temp$ cat skript
#!/bin/bash 
alte_befehlszeile="Alte Befehlszeile"
neue_befehlszeile="Neue Befehlszeile"
Zeile_mit_bestimmtem_Inhalt="Zeile mit bestimmtem Inhalt"
for f in file?
do
  mv "$f" "$f.bak"
  if grep "$alte_befehlszeile" "$f.bak" >/dev/null
  then
    sed 's/^'"$alte_befehlszeile"'$/'"$neue_befehlszeile"'/' "$f.bak" >"$f"
  else
    sed '/^'"$Zeile_mit_bestimmtem_Inhalt"'$/{x;s/^/'"$neue_befehlszeile"'/;G;}' "$f.bak" >"$f" 
  fi
done
jsa@anna:~/temp$ ./skript
jsa@anna:~/temp$ cat file1
foo
bar
Neue Befehlszeile
Zeile mit bestimmtem Inhalt
baz
jsa@anna:~/temp$ cat file2
foo
bar
Neue Befehlszeile
baz


Beste Grüsse - Jürgen



Reply to: