Archiv verlassen und diese Seite im Standarddesign anzeigen : Suchen/Ersetzen in awk
wmessmer
08-01-2008, 17:43
Hallo Leute,
ich möchte in einer Datei das Zeichen "~" durch ein "#" ersetzen.
Kann mir hier jemand helfen?
Danke vorab.
Werner
sed -i 's/~/#/g' datei sollte funktionieren.
wmessmer
09-01-2008, 08:29
Hallo jeebee,
geht leider nicht.
Wollte dies mit awk in einer Batch ausführen.
Gruß
Werner
dann mit awk:
{ rm test.txt && awk 'gsub("~","#")' > test.txt; } < test.txt Variante ohne temporäre Datei. Oder:
awk 'gsub("~","#")' test.txt > tmp; mv tmp test.txt mit temporärer Datei.
wmessmer
09-01-2008, 17:06
hat super funktioniert!
jetzt möchte ich noch in der Datei die ersten 3 Zeilen "rausschmeissen".
Geht dass?
[ Annahme Unix/Linux; coreutils und shell mit Pipelinig vorhanden ]
mit dem folgenden Befehl kannst du die ersten 3 Zeilen abschneiden:
tail -n +4 test.txt > tmp ; mv tmp > test.txt Dies gibt die Datei test.txt von der 4. Zeile an aus.
Also:
tail -n +4 | awk 'gsub("~","#")' test.txt > tmp; mv tmp test.txt
hat super funktioniert!
jetzt möchte ich noch in der Datei die ersten 3 Zeilen "rausschmeissen".
Geht dass?
Wenn Du schon beim awk bist: awk ' { if (NR < 4) getline; } ... '
awk kennt etliche vordefinierte Variablen (siehe "man awk"), NR steht für die aktuelle Zeile der Eingabedatei. getline ist sowas wie next in Perl oder continue in anderen Sprachen - Überspringen aller folgenden Befehle und Fortsetzen mit dem nächsten Schleifenwert (für awk die nächste Eingabezeile).
Jan
Hmm, danke das hab ich beim Überfliegen der man-page nicht gefunden... War mir aber ziemlich sicher dass sowas gehen muss.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.