如何使用 for 命令按文件给我输出?



我有一个名为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

如果要按名称而不是章节对结果进行分组,则必须相应地交换循环和输出。

最新更新