처리를 위해 bash 스크립트에서 awk 출력 수집

처리를 위해 bash 스크립트에서 awk 출력 수집

폴더의 여러 파일을 처리하는 bash 스크립트에 루프가 있습니다. 내 루프에서 각 파일에 대해 다음 줄을 실행합니다.

awk -F":" '{ print "Name: " $1 "\t\tID:" $3 }' $file

루프 외부의 다른 처리를 위해 일부 bash 변수/배열에서 처리된 모든 파일의 출력을 수집하고 싶습니다. Bash에서 어떻게 이를 달성할 수 있나요?

답변1

이는 쉘 스크립트 배열을 사용하여 쉽게 수행할 수 있습니다.

i=0
for file in file1 file2 ....; do
    output[$i]=$(awk -F":" '{ print "Name: " $1 "\t\tID:" $3 }' "${file}")
    i=$((${i}+1))
done

답변2

a0f3dd13과 유사하게 사용할 수 있습니다.연관정렬. 특히 데이터를 검색할 때 유용할 수 있습니다.

연관 배열은 정수 대신 문자열을 인덱스로 사용할 수 있으므로(기본적으로 해시 맵임) 데이터를 더 쉽게 검색할 수 있습니다.

declare -A output
for file in file1 file2 ....;do
    output["$file"]=$(awk -F":" '{ print "Name: " $1 "\t\tID:" $3 }' "${file}")
done

그런 다음 데이터를 검색하려면 다음을 사용할 수 있습니다.

echo "${output[file1]}"

그러면 얻은 결과가 출력됩니다.file1

관련 정보