다중 폴더 및 하위 파일에 awk 적용

다중 폴더 및 하위 파일에 awk 적용

연속된 이름을 가진 10개의 폴더가 있습니다: book_1, book_2..... book_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

"책" 파일 중 하나라도 존재할 수 없으면 이에 대한 보호 기능을 추가해야 합니다.

관련 정보