다음 텍스트 파일이 있습니다.
(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 등)을 허용합니다.