터미널의 이름 사이의 데이터를 새 파일에 저장하시겠습니까?

터미널의 이름 사이의 데이터를 새 파일에 저장하시겠습니까?

다음 텍스트 파일이 있습니다.

(Employee Ashley)

insert text here

(Employee Bob)

insert text here

(Employee Joseph)

insert text here

각 "직원"의 텍스트를 가져와 새 파일에 저장하고 싶습니다. 필요한 경우 직원 수를 수동으로 계산할 수 있습니다. 터미널에서 이 작업을 어떻게 수행할 수 있나요?

나는 "awk"를 생각하고 있으며 여는 괄호는 가운데에 텍스트가 있는 유일한 것이므로 여는 괄호를 감지하는 방법을 생각하고 있습니다.파일 디렉토리에>출력 파일 디렉터리

해결되지 않은 문제를 해결하는 데 도움을 줄 수 있는 사람이 있나요?

답변1

while read -r line; do
    if [[ $line == "(Employee "*")" ]]; then
        t="${line#(Employee }"
        t="${t%)}"
        fn="${t}.txt"
    fi
    echo "$line" >>$fn
done <original_file.txt

그러면 텍스트가 Ashley.txt, Bob.txt, Joseph.txt, &c에 입력됩니다.

답변2

awk ' /^\(Employee/ { FILENAME="";
                      for ( i=2 ; i<=NF; i++)
                         FILENAME=FILENAME $i;
                      FILENAME=substr(FILENAME,1,length(FILENAME)-1) ".txt";
                    }
     !/^\(Employee/ { print >> FILENAME } '

이는 첫 번째 행이 항상 직원 식별자라고 가정합니다. 루프 for는 성 또는 여러 개의 이름(Betty Lou, Mary Jo 등)을 허용합니다.

관련 정보