0

awk で生成された用語のリスト、terms.txt があります。数千もの小さな xml ファイルでいっぱいのディレクトリを検索して、terms.txt 内の用語のいずれかと完全に一致するものを探す必要があります。2 番目のリスト、matches.txt を生成する必要があります。これには、各一致のファイル名と用語が含まれています。

これを行うために awk を使用できますか? awk を使用して次のようにリストを再フォーマットすると考えていました: "term1|term2|term3|..." ...おそらく変数 (VariableName) を使用して、再フォーマットされたリスト文字列を表すことができます。これを使用して用語を一致させます。

awk "/VariableName/{ print FILENAME \": \" $0;}" C:\directory\*.txt > matches.txt

このような変数を awk で作成して使用することは可能ですか? そうでない場合、awkでより良い方法はありますか? リストを入力して、一度に 1 用語ずつディレクトリと照合できるのではないでしょうか。

どんな助けでも大歓迎です。

4

2 に答える 2

2

GNU のコード:

awk -f prog.awk terms.txt "C:\directory\*.txt"


NR==FNR {t[$0]; next}
{
    for (x in t) {
        p="\\<"x"\\>"
        if (match ($0, p ))
            {
            f[FILENAME]
            m[FILENAME,x]++
            }
        }
}

END {
    for (a in f)
        {
        printf("\n%s", a)
        for (b in t)
            {
            if (m[a,b]) {printf("|%s", b)}
            }
        }
}

とのマッチングword boundaries

于 2013-07-09T23:45:58.707 に答える