8

このawkコマンドを使用しようとしています:

awk -F: '
FILENAME==ARGV[1] { 
    a[FNR]=$1
}
FILENAME==ARGV[2] { 
    for(i=1;i<=length(a);i++) { 
        if(match($0,a[i])) { 
            print a[i],$1
        }
    }
}' 16.passwd 16.group | sort

しかし得た:

awk: line 1: illegal reference to array a
4

3 に答える 3

1

構文に関する限り、スクリプトに問題はありませんでした。コードをscript.awkというファイルに保存し、実行しました。

awk -F: -f script.awk file1 file2

エラーは表示されませんでした。同じことを試してみませんか。スクリプトを別のファイルに入れて、その上で awk を呼び出します。それでも同じ問題が発生する場合は、データ ファイルに問題がある可能性があります。

アップデート

コードを少し整理しました。新しいバージョンの方が読みやすいかもしれません。

FNR==NR {a[FNR] = $1; next}

{
    for (i in a) {
        if (match($0, a[i])) {
            print a[i], $1
        }
    }
}
于 2013-06-04T15:38:05.827 に答える