团队,
我有如下所示的管道分隔文件,
100|0.0|yyy|zzz
200|3.5|www|ttt
300|-5.134|uuu|kkk
400|-9.823798|ooo|ppp
我需要将零和负值替换为“ NA”。
预期输出:
100|NA|yyy|zzz
200|3.5|www|ttt
300|NA|uuu|kkk
400|NA|ooo|ppp
请对此提供帮助。
答案 0 :(得分:1)
AWK将是一个很好的工具。
awk 'BEGIN{FS="|"}
{for(i=1; i <= NF; i++) {if($i > 0){out=out"|"$i}else{out=out"|NA"}};
print substr(out,2)}'
我们将字段分隔符(FS)设置为“ |”
循环遍历所有字段编号(1到NF)。
如果大于0,则附加| $ i,管道加字段值。
如果没有,我们附加| NA。
循环完成后,我们打印的第一个字符仍然是管道。
请注意,现在已经完成了ascii比较。
答案 1 :(得分:1)
awk -F\| '{sub(/^-.*|^0.*/,"NA",$2)}1' OFS=\| file
100|NA|yyy|zzz
200|3.5|www|ttt
300|NA|uuu|kkk
400|NA|ooo|ppp