awk for 루프 파일이 디렉토리에 있음

awk for 루프 파일이 디렉토리에 있음

awk 명령을 사용하여 디렉토리의 각 파일을 어떻게 반복합니까?

awk -F: 'FNR==NR{a[$1]=$2;next} $2 in a{print $1 FS a[$2]}' email.phone.txt username.email.txt

기본적으로 이 부분은 컬럼을 매칭하여 합쳐서 결과를 출력하는 부분입니다.

예는 >

email.phone.txt - 다음을 포함합니다:

[email protected]:phoneexample

사용자 이름.email.txt - 포함:

user1:[email protected]
user131:[email protected]

예상 출력 - 다음과 같아야 합니다.

user1:phoneexample
user131:phoneexample

하지만 이것은 하나의 텍스트 파일에만 작동합니다.

email.phone.txt

하지만 하위 디렉터리에 동일한 내용을 가진 여러 파일이 있습니다. 예를 들면 다음과 같습니다.

../lists/
email.phone1.txt
email.phone2.txt
email.phone3.txt
....

각 파일을 개별적으로 awk하는 것은 매우 시간이 많이 걸립니다. 디렉터리의 각 파일에 대해 for 루프를 사용하고 예제를 출력할 수 있습니까? >

result1.txt
result2.txt
result3.txt
...

답변1

각 파일에 대해 awk 스크립트를 실행 하시겠습니까 email.phone*.txt? username.email.txt이런 일이 이루어져야합니다. 출력 파일 이름의 꼬리는 1.txt입력 파일 이름에서 가져옵니다.

for f in email.phone*.txt; do
    out="result${f#email.phone}"       # remove leading 'email.phone'
    awk -F: 'FNR==NR{a[$1]=$2;next} $2 in a{print $1 FS a[$2]}' \
        "$f" username.email.txt > "$out"
done

관련 정보