PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AWK das richtige??



keks01
28-05-2007, 10:21
guten morgen.....

ich möchte in einer datei einen string ersetzen. da es sich um ein embedded system hadelt, kommen nur awk, batch und sed in frage. ich dachte jetzt mal an awk, komm aber nicht wirklich weiter.
follgende datei mit dem namen options ist vorhanden:

default-asyncmap
mtu 1492
mru 1492
persist
lcp-echo-interval 5
lcp-echo-failure 3

die zeile "lcp-echo-failure 5" soll ersetzt werden durch "lcp-echo-failure 10"
meine idee war nun: awk '$1=="lcp-echo-interval" {$2="100";print}' options

das funktioniert soweit auch für die std ausgabe, aber wie kann ich das in die datei zurückschreiben

für hilfe währe ich euch sehr dankbar

jan61
28-05-2007, 21:45
guten morgen.....

ich möchte in einer datei einen string ersetzen. da es sich um ein embedded system hadelt, kommen nur awk, batch und sed in frage. ich dachte jetzt mal an awk, komm aber nicht wirklich weiter.
follgende datei mit dem namen options ist vorhanden:

default-asyncmap
mtu 1492
mru 1492
persist
lcp-echo-interval 5
lcp-echo-failure 3

die zeile "lcp-echo-failure 5" soll ersetzt werden durch "lcp-echo-failure 10"
meine idee war nun: awk '$1=="lcp-echo-interval" {$2="100";print}' options

das funktioniert soweit auch für die std ausgabe, aber wie kann ich das in die datei zurückschreiben

für hilfe währe ich euch sehr dankbar

Etwas durcheinander, was Du da beschreibst - Deine Erläuterungen passen nicht so richtig zum Code ;-) - Ich habe mal den Code als Basis genommen.

awk '$1=="lcp-echo-interval" {$2="100"} {print}' options >options.tmp && mv options.tmp options

Dein Fehler ist, dass Du nur die geänderte Zeile ausgibst - den Rest aber nicht. Die o. g. Variante schreibt die (entweder geänderte oder unveränderte) Zeile auf jeden Fall wieder raus.

Das geht aber auch mit sed (sollte etwas resourcenschonender sein):

sed 's/\(lcp-echo-interval \)[0-9]*/\1100/' options >options.tmp && mv options.tmp options

Jan