Re: Zeilen Ersetzen
- From: Laurianne Gardeux <lg@xxxxxxxxxxxx>
- Date: 18 Oct 2008 23:15:34 GMT
Le Sat, 18 Oct 2008 09:40:52 +0200, Matthias Taube a écrit :
mittels sed kann ich ja innerhalb einer Zeile von Dateien einen
Suchstring durch einen anderen ersetzen.
Ich suche aber eine Lösung, um innerhalb einer Datei alles zwischen den
Zeilen (ausschließlich)
PF_ORIG_CONFIG=
PF_NEW_CONFIG=
durch andere Zeilen zu ersetzen.
s='
'
a=$(awk '/PF_ORIG_CONFIG=/{print NR}' FILE)
b=$(awk '/PF_NEW_CONFIG=/{print NR}' FILE)
(cut -d"$s" -f"-$a" FILE; cat INSERTFILE; cut -d"$s" -f"$b-" FILE)
FILE steht für das Orginalfile und INSERTFILE für die Datei, welche die
einzusetzenden Zeilen enthält. Mit awk werden die Zeilennummern der
Zeilen, welche die beiden Suchbegriffe enthalten, bestimmt. Als
Feldseparator für cut ist eine newline gesetzt. Die runde Klammer in der
letzten Zeile hält die Ausgabe von cut, cat und nochmals cut zusammen.
Die beiden Suchstrings müssen im HAUPFILE vorkommen, dies jedoch nur je
genau einmal, sonst macht cut nicht mit.
Das gleiche nochmals als roher Entwurf eines Shellskript mit vier
Komandozeilenparametern:
***
#! /bin/sh
# zeilenersatz.sh
# 20081019 lg GPL
if [ $# -ne 4 ]; then
echo "SYNOPSIS: $0 FILE STARTSTRING ENDSTRING INSERTFILE"
exit
fi
a=$(awk '/'"$2"'/{print NR}' "$1")
b=$(awk '/'"$3"'/{print NR}' "$1")
s="
"
(cut -d"$s" -f"-$a" "$1"; cat "$4"; cut -d"$s" -f"$b-" "$1")
***
Es gibt sicher viel elegantere Lösungen, und Obiges ist nicht auf
alle möglichen Sonderfälle getestet. Kritik willkommen.
lg
.
- Follow-Ups:
- Re: Zeilen Ersetzen
- From: Matthias Taube
- Re: Zeilen Ersetzen
- From: Helmut Hullen
- Re: Zeilen Ersetzen
- References:
- Zeilen Ersetzen
- From: Matthias Taube
- Zeilen Ersetzen
- Prev by Date: Zeilen Ersetzen
- Next by Date: Re: Zeilen Ersetzen
- Previous by thread: Zeilen Ersetzen
- Next by thread: Re: Zeilen Ersetzen
- Index(es):
Relevant Pages
|