如何比较awk中的浮点变量?

awk -F, 'NR==FNR{c[$29]=$29;next} NF{print $29 ((c[$29]==$29)?" ":",mismatch")}' $file1 $file2 

第29个字段的值,即file1中的$ 29是832.9,file2的值是832.9000。 如果我比较它们就不一样了。 我认为这是一个字符串而不是一个数字。

我该怎么办?

awk比较浮点数:

我刚写了一个新脚本:

 paste \ <(awk -F, '{print $29}' file1 ) \ <(awk -F, '{print $29}' file2 ) \ | awk '{print $1; print $2; print ($1==$2)?"match" :"mismatch"}' 

如果你不喜欢rest,那么使用printf而不是print.


输入文件

cat file1

 12,2,12,12,12,12,3,2,53,6,5474,346,567,6578,89,7689,7,987,69869,1,4,5,4,3,4,2,6,21,832.9,9,2 12,2,12,12,12,12,3,2,53,6,5474,346,567,6578,89,7689,7,987,69869,1,4,5,4,3,4,2,6,21,12.329,9,2 

cat file2

 12,2,12,12,12,12,3,2,53,6,5474,346,567,6578,89,7689,7,987,69869,1,4,5,4,3,4,2,6,21,832.9000,9,2 12,2,12,12,12,12,3,2,53,6,5474,346,567,6578,89,7689,7,987,69869,1,4,5,4,3,4,2,6,21,832.9000,9,2 

产量

 % paste <(awk -F, '{print $29}' file1 ) <(awk -F, '{print $29}' file2 ) | awk '{print $1; print $2; print ($1==$2)?"match" :"mismatch"}' 832.9 832.9000 match 12.329 832.9000 mismatch