我有一个名为Chapters
的文件夹,其中包含 20 个文件,每个文件有一本书的 1 章。
我有一个名为book_chap.list
的文件,其中包含章节列表。它包含如下内容:
chap_00
chap_01
我有一个名为book.names10
的第三个文件,其中包含一个名称列表。它包含如下内容:
Name1
Name2
我需要从输出中得到的是一个文件,该文件按章节指示每个名称在每章中说出的时间。像这样:
chapters/chap_01:Name1
chapters/chap_01:Name1
chapters/chap_01:Name2
我正在使用这个:
for a in chapters/chap_* ;
do
echo -n $a;
ggrep -F -f book.names10 -w -o $a | wc -l ;
done
但我唯一得到的是每个章节中名称使用次数的列表。我不知道在此命令上集成文件book_chap.list
的位置。
快速而肮脏(您可能希望美化输出(:
#!/bin/bash
for chapter in $(ls chapters/chap_*); do
echo "Chapter ${chapter}:" >> nameOccurences.txt
for name in $(cat book.names10); do
echo -n "${name}: " >> nameOccurences.txt
grep -o ${name} ${chapter} | wc -l >> nameOccurences.txt
done
echo "" >> nameOccurences.txt
done
如果要按名称而不是章节对结果进行分组,则必须相应地交换循环和输出。