将文件中的负值替换为零

将文件中的负值替换为零

我想用零替换文件中的所有负值。如何在 awk 中执行此操作?

我尝试过gsub,但gsub(-*, 0)没有用...有什么想法吗?

我的“代码”是

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

答案1

看起来您正尝试仅更新第二列。如果是这样,则应该执行以下操作:

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

相关内容