我有以下文本文件:
(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 等)