ich eine Textdatei wie diese:awk: finden und in bestimmtem Feld ersetzen nur
$ cat test
12 13 2100 s
12 13 3100 s
100 13 100 s
12 13 300 s
ich die Ausgabe will so sein:
$ cat test
12 13 22000 s
12 13 32000 s
100 13 2000 s
12 13 300 s
Ich mag nur 100
ersetzen in Feld 3 (einmal 100
ist in $3
enthalten) in 2000
. Wie kann ich diesen Job mit awk
ausführen?
Wie kann ich alles ersetzen, die nicht 100 ist mit 5000 können sagen, ? – discipulus
@lovedynast: Sie könnten etwas versuchen wie: 'awk '{sub (/ [^ 1] * [^ 0] * [^ 0] * /," 5000 ", $ 3)} 1' Datei '. Aber das liefert möglicherweise nicht die erwarteten Ergebnisse. Normalerweise, wenn ich eine Art inversen Mustervergleich durchführen möchte, möchte ich eine Art [Look-Around-Assertion] verwenden (http://www.regular-expressions.info/lookaround.html). Leider unterstützt 'awk' diese nicht und ich müsste ein leistungsfähigeres Werkzeug verwenden. Ich würde stattdessen "Perl" im "Auto-Split" -Modus verwenden. HTH. – Steve