将终端中名称之间的数据保存到新文件中?

将终端中名称之间的数据保存到新文件中?

我有以下文本文件:

(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 等)

相关内容