![用于读取文档中某些关键字的脚本](https://linux22.com/image/58829/%E7%94%A8%E4%BA%8E%E8%AF%BB%E5%8F%96%E6%96%87%E6%A1%A3%E4%B8%AD%E6%9F%90%E4%BA%9B%E5%85%B3%E9%94%AE%E5%AD%97%E7%9A%84%E8%84%9A%E6%9C%AC.png)
我有一个包含 50 个文件夹的列表。在每个文件夹中,我都有一个包含关键字的文本文件,并且该文件在所有文件夹中具有相同的名称,但具有不同的值。脚本如何读取这些文本文件中的某些关键字并将这些结果保存(收集)到新文件中?
folder A
text.file (inside it key words let us say Abc=1 Def=2 Ghi=3 )
folder b
text.file(inside it key words let us say Abc=5 Def=1 Ghi=4 )
folder c
text.file(inside it key words let us say Abc=11 Def=12 Ghi=32 )
folder d
text.file(inside it key words let us say Abc=11 Def=27 Ghi=34 )
folder e
text.file(inside it key words let us say Abc=16 Def=12 Ghi=22 )
folder f
text.file(inside it key words let us say Abc=3 Def=2 Ghi=1)
.
.
.
.
folder N
文本文件中的关键词排序如下(50文件夹中包含的所有文件中关键词的排序方式相同)
Abc= value
Def= value
Ghi= value
例如:我需要脚本读取所有文件中的关键字“Abc”并保存输出(即在新文件中分别收集关键字“Abc”的值),因为文本文件仅包含“Abc”所有文件夹中的“值如下:
Abc=1
Abc=5
Abc=11
Abc=11
Abc=16
Abc=3
答案1
如果所有关键词在text.file中排序如下(并且关键词的排序在50文件夹中包含的所有文件中都是相同的)
Abc= value
Def= value
Ghi= value
然后您可以将它们的第一行读head -n 1 filename
入 for 循环并将其写入新文件中,如下所示:
$ for file in ~/Parent_dir/Folder*/*; do head -n 1 $file; done
Abc=1
Abc=5
Abc=11
Abc=11
Abc=16
Abc=3
您的脚本将如下所示:
for file in ~/Parent_dir/Folder*/*; do
head -n 1 $file;
done > newfile