![ファイル内の負の値をゼロに置き換える](https://rvso.com/image/1416699/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%86%85%E3%81%AE%E8%B2%A0%E3%81%AE%E5%80%A4%E3%82%92%E3%82%BC%E3%83%AD%E3%81%AB%E7%BD%AE%E3%81%8D%E6%8F%9B%E3%81%88%E3%82%8B.png)
ファイル内のすべての負の値をゼロに置き換えたいのですが、awk でこれを実行するにはどうすればよいですか?
試してみましたがgsub
、gsub(-*, 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