我的文件夹中有 5000 个文件。这些文件被命名为 XX0000001 到 XX0005000
我正在尝试从每个文件中获取单词,然后 grep 它们以及另一个文件中的下一行(target.txt)
我的一些 XX* 文件中有大约 30,000 个单词
有什么办法可以做到这一点吗?
我努力了 :
start_number=0000001
end_number=0005000
words_file=target.txt
output_folder="output_results"
mkdir -p "$output_folder"
for ((i=start_number; i <=end_number; i++)); do
filename="XX$(printf "%07d" "$i")"
output_file="$output_folder/output_${filename}.txt"
while read -r word; do
awk -v word="$word" '{for (i=1; i<=NF; i++) if($1 ~ word) {print; next}}' "$filename" >> "$output_file"
done < "$words_file"
done
有没有更快的方法来做到这一点?我的目标文件有数百万行需要搜索;精确目标文件大小为 20 GB,106441678 行
例如:XX0000001 文件看起来像:
Big1 Big5 Big7 Big10 Big11(还有更多的单词;某些 XX 文件甚至可能有多达 30k 单词)
Target.txt 文件如下所示:
#大1
这_是_文件_包含_xxxxx
#大2
这_是_文件_包含_xxxxx
#Big3
这_是_文件_包含_xxxxx
#Big4
这_是_文件_包含_xxxxx
#Big5
这_是_文件_包含_xxxxx
#Big6
这_是_文件_包含_xxxxx
#Big7
这_是_文件_包含_xxxxx
#Big8
这_是_文件_包含_xxxxx
#Big9
这_是_文件_包含_xxxxx
#Big10
这_是_文件_包含_xxxxx
#Big11
这_是_文件_包含_xxxxx
#Big12
这_是_文件_包含_xxxxx