Unix循环文件,获取文件中的特定文本,并仅使用这些行创建新文件

时间:2017-07-18 17:36:03

标签: unix sed grep

我的文件夹包含大约100个文件。我想在每个文件中搜索特定的单词,只从每个文件中选取这些行并将它们放在单独的文件中。例如:

查找包含单词" HELLO" (区分大小写)在FILE1.txt,FILE2.txt,FILE3.txt。

From FILE1, copy those lines and put them in a new file, FILE1_BK.txt
From FILE2, copy those lines and put them in a new file, FILE2_BK.txt
From FILE3, copy those lines and put them in a new file, FILE3_BK.txt

我知道如何一次执行此文件,但无法一次为多个文件编写脚本。

grep "HELLO" FILE1.txt > FILE1_BK.txt

需要将其合并到循环中。

for f in myFolder; do something; done;

提前致谢!

3 个答案:

答案 0 :(得分:1)

为什么要手动循环?为什么不grep "HELLO" *.txt > FILE1_BK.txt

for f in *.txt; do
    grep "HELLO" $f > $f_found.txt;
done

答案 1 :(得分:1)

假设您有文件路径存储在名为 filenames.txt 的文件中,那么您可以这样做:

while read -r filepath; do
    grep -r "pattern" $filepath > "$filepath""-output"
done < filenames.txt

这显然假设所有文件路径都在 filenames.txt

的新行中

答案 2 :(得分:0)

表示./myFolder/*中的f;做grep&#34; SEARCHWORD&#34; $ f&gt; $ f.bak;完成的;