![Заменить отрицательные значения в файле нулями](https://rvso.com/image/1416699/%D0%97%D0%B0%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D0%BE%D1%82%D1%80%D0%B8%D1%86%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B5%20%D0%BD%D1%83%D0%BB%D1%8F%D0%BC%D0%B8.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