我写了一些awk脚本来处理一些数据,发现结果出乎意料。
我发现根本原因是以下字符串比较不正确
echo "59558711052462309110012 59558711052462313120012"|awk '{print $1;print $2;print ($1==$2)?"eq":"ne"}'
结果是
59558711052462309110012
59558711052462313120012
eq
我想原因是awk将两个数字字符串视为数字,并将它们切断以进行比较。 我的问题是如何在awk中严格比较两个字符串。
答案 0 :(得分:4)
强制进行字符串比较,告诉awk至少有一个操作数是一个字符串,方法是将该操作数与空字符串连接起来:
echo "59558711052462309110012 59558711052462313120012"|
awk '{print $1;print $2;print ($1""==$2)?"eq":"ne"}'
59558711052462309110012
59558711052462313120012
ne