複数のフォルダとサブファイルにawkを適用する

複数のフォルダとサブファイルにawkを適用する

book_1、book_2..... book_10という名前の連続した10個のフォルダがあり、各フォルダにはフォルダと同じ名前のtxtファイルがあります。例: book_1ただbook_1.txtには歴史的な資料が含まれています(テキストのみ)。

出力を出力ファイルに順次追加する必要があるAWKスクリプトを実行する必要があります。私のフォルダを介して実行され、各フォルダから必要なファイルを抽出するループを作成するにはどうすればよいですか?

awk '
    {
        script//
    }
    END { print "The output of book num $i is:  " m }' book*/book*.txt >> output.txt // m is a variable which extracts max occurences of certain words which are set in the script

私の出力は次のようになります。

The output of book num 1 is : 123
The output of book num 2 is : 2223

など。

ご協力ありがとうございます!

ベストアンサー1

{1..10}一連の数値を生成する構成をサポートするシェルでawkを使用する簡単な方法(それ以外の場合は単に使用$(seq 10))は次のとおりです。

for i in {1..10}; do
    awk -v i="$i" '
        {
            script//
        }
        END { printf "The output of book num %d is : %d\n", i, m }
    ' "book_${i}/book_${i}.txt"
done > output.txt

しかし、本当にすべての操作をawkで実行したい場合(ARGINDとENDFILEにGNU awkを使用):

awk '
    BEGIN {
        for (i=1; i<=10; i++) {
            ARGV[ARGC] = "book_" i "/book_" i ".txt"
            ARGC++
        }
    }
    {
        script//
    }
    ENDFILE { printf "The output of book num %d is : %d\n", ARGIND, m; m=0 }
'  > output.txt

「書籍」ファイルが存在しない場合は、いくつかの保護機能を追加する必要があります。

おすすめ記事