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

时间:2012-12-16 09:25:42

标签: awk string-comparison

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

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

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

结果是

59558711052462309110012
59558711052462313120012
eq

我想原因是awk将两个数字字符串视为数字,并将它们切断以进行比较。 我的问题是如何在awk中严格比较两个字符串。

1 个答案:

答案 0 :(得分:4)

强制进行字符串比较,告诉awk至少有一个操作数是一个字符串,方法是将该操作数与空字符串连接起来:

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