2

いくつかのデータを処理するためにいくつかのawkスクリプトを作成しましたが、予期しない結果が見つかりました。

根本的な原因は、次の文字列の比較が正しくないことであることがわかりました

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

結果は

59558711052462309110012
59558711052462313120012
eq

その理由は、awkが2つの数値文字列を数値として扱い、それらを切り取って比較するためだと思います。私の質問は、awkの2つの文字列を厳密に比較するにはどうすればよいかということです。

4

1 に答える 1

4

オペランドの少なくとも1つが文字列であることをawkに伝えて、そのオペランドをnull文字列と連結することにより、文字列の比較を強制します。

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