2

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

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

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

结果是

59558711052462309110012
59558711052462313120012
eq

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

4

1 回答 1

4

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

echo "59558711052462309110012 59558711052462313120012"|
awk '{print $1;print $2;print ($1""==$2)?"eq":"ne"}'
59558711052462309110012
59558711052462313120012
ne
于 2012-12-16T16:03:24.710 回答