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