如何严格比较awk中的两个长数值字符串

如何严格比较awk中的两个长数值字符串,awk,string-comparison,Awk,String Comparison,我编写了一些awk脚本来处理一些数据,结果出乎意料 我发现根本原因是以下字符串比较不正确 echo "59558711052462309110012 59558711052462313120012"|awk '{print $1;print $2;print ($1==$2)?"eq":"ne"}' 结果是 59558711052462309110012 59558711052462313120012 eq 我猜原因是awk将这两个数字字符串视为数字,并将它们截断以进行比较。 我的问题是如何

我编写了一些awk脚本来处理一些数据,结果出乎意料

我发现根本原因是以下字符串比较不正确

echo "59558711052462309110012 59558711052462313120012"|awk '{print $1;print $2;print ($1==$2)?"eq":"ne"}'
结果是

59558711052462309110012
59558711052462313120012
eq
我猜原因是awk将这两个数字字符串视为数字,并将它们截断以进行比较。
我的问题是如何严格比较awk中的两个字符串。

通过将该操作数与空字符串串联,告诉awk至少有一个操作数是字符串,从而强制进行字符串比较:

echo "59558711052462309110012 59558711052462313120012"|
awk '{print $1;print $2;print ($1""==$2)?"eq":"ne"}'
59558711052462309110012
59558711052462313120012
ne

通过将操作数与空字符串串联,告诉awk至少有一个操作数是字符串,强制进行字符串比较:

echo "59558711052462309110012 59558711052462313120012"|
awk '{print $1;print $2;print ($1""==$2)?"eq":"ne"}'
59558711052462309110012
59558711052462313120012
ne

因此,如果我没有将操作数与空字符串连接起来,awk将进行数字比较,如果长度超过,awk将切断操作数。在不做任何修改的情况下,awk将尝试确定您是否需要数字或字符串比较。只要双方“看起来像”(通过awks推理)数字,比较就会是数字,否则就会是字符串。idk什么
在长度超过时切断操作数意味着什么。因此,如果我没有将操作数与空字符串连接起来,awk将进行数字比较,如果长度超过,awk将切断操作数?在不做任何修改的情况下,awk将尝试确定是否要进行数字或字符串比较。只要双方“看起来像”(通过awks推理)数字,比较就会是数字,否则就会是字符串。idk what
如果长度超过
的意思,则切断操作数。