ファイル内の最短数字を見つける方法

ファイル内の最短数字を見つける方法

ファイルで最短の数字を見つけようとしていますが、どうすればいいかわかりません。これは私の入力ファイルです。

asd
qwmcqm
342
xsa
53425423432
54334
aseqwe
// so i want to print "342"

AWKスクリプトである必要があるため、シェルで「ソート」を使用することはできません。以下を試しました。

while(( getline line < "FileInput" ) > 0 ){
if ( line ~ /[0-9]/ )
if (length(line) < L)
    L = length(line)
}

しかし、動作しません!スクリプト内の「<」を「>」に変更すると、最大数に対してのみ機能します。

ベストアンサー1

あなたの例が最小数の代わりに最大数を見つけるのに機能する理由は、awk明示的に設定されていない変数のデフォルト値がゼロであるためです。一致する行のどれもゼロ未満ではありません。

以前に見つけた数字と比較したいので、条件のLがゼロであることを確認することで、見つかった最初の数字が同じであることを確認できます。 (これは最初の数字の場合にのみ発生します。)長さは次のように設定されます。 L(ファイルに表示)。

if (length(line) < L || L == 0) {
   L = length(line)
}

おすすめ記事