Ersetzen Sie negative Werte in einer Datei durch Nullen

Ersetzen Sie negative Werte in einer Datei durch Nullen

Ich möchte alle negativen Werte in einer Datei durch Nullen ersetzen. Wie kann ich das in awk machen?

Ich habe es mit versucht gsub, aber gsub(-*, 0)es funktioniert nicht ... Irgendwelche Ideen?

Mein "Code" ist

awk '{gsub($(!/-/),"0",$2); print $1 "\t" $2} file.dat >file.dat

Antwort1

Es sieht so aus, als würden Sie nur die zweite Spalte aktualisieren. Wenn das der Fall ist, sollte dies Folgendes ergeben:

awk '$2<0 {$2=0} 1' file > tmp_file && mv tmp_file file

Prüfen

$ cat a
hello 2
hello 3
hello -1
hello -4
hello 0
$ awk '$2<0 {$2=0} 1' a
hello 2
hello 3
hello 0
hello 0
hello 0

verwandte Informationen