내가 이것을 가지고 있다고 가정 해 봅시다 :
ARRAY=()
NUM_EXTRACTED=$(cat somefile.txt | awk '/magic/{i++; print > i "_extracted.txt"} END {print i}')
for (( i=1; i<=$NUM_EXTRACTED; i++)); do
LINE=$(cat "$i"_extracted.txt)
ARRAY+=("$LINE")
done
이 스크립트는 "magic"이라는 단어가 포함된 somefile.txt의 모든 행을 가져와 ARRAY 배열에 넣습니다.
행을 임시 파일에 저장하지 않고 ARRAY를 직접 채울 수 있는 방법은 무엇입니까?
답변1
에서는 내장 함수와 함께 작동 bash
합니다 .readarray
readarray -t myarray < <(grep magic somefile.txt)
보다 일반적으로 말하면, 셸에서 텍스트를 처리하기 위해 루프를 사용하는 경우 아마도 잘못 수행하고 있는 것입니다. 쉘 배열을 사용하여 작업한다는 것은 일반적으로 적절한 프로그래밍 언어도 필요함을 나타냅니다(또는 에서 모든 작업을 수행함 awk
).