ファイル内の負の値をゼロに置き換える

ファイル内の負の値をゼロに置き換える

ファイル内のすべての負の値をゼロに置き換えたいのですが、awk でこれを実行するにはどうすればよいですか?

試してみましたがgsubgsub(-*, 0)うまくいきません...何かアイデアはありますか?

私の「コード」は

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

答え1

2 列目だけを更新しようとしているようです。その場合、次のようにします。

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

テスト

$ 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

関連情報