8 Stimmen

Awk: Suche und ersetze nur in bestimmtem Feld

Ich habe eine Textdatei wie diese:

$ cat test
12 13 2100 s
12 13 3100 s
100 13 100 s
12 13 300 s

Ich möchte, dass die Ausgabe so aussieht:

$ cat test
12 13 22000 s
12 13 32000 s
100 13 2000 s
12 13 300 s

Ich möchte nur das 100 im 3. Feld (sobald 100 in $3 enthalten ist) durch 2000 ersetzen. Wie kann ich diese Aufgabe mit awk erledigen?

14voto

Steve Punkte 45842

Hier ist eine Möglichkeit, awk zu verwenden:

awk '{ sub(/100$/, "2000", $3) }1' Datei

Ergebnisse:

12 13 22000 s
12 13 32000 s
100 13 2000 s
12 13 300 s

1voto

Vijay Punkte 62277
awk '$3~/100/{gsub(/100/,"2000",$3)}1' deine_datei

1voto

anishsane Punkte 18999

Versuchen Sie es:

awk '{$3=gensub(100,2000,1,$3);print}' test.txt

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X