如何将grep结果发送到每个输入文件的不同输出文件中?

时间:2012-11-29 15:59:20

标签: grep

我有一个包含文本文件的文件夹。我需要从这些文本文件中提取具有“BA”的行。我用grep命令用BA打印线条。我想将输出保存到具有相同文件名的另一个文件夹。如何更改以下代码?

grep "  BA  "  dir/*.txt

2 个答案:

答案 0 :(得分:2)

for i in dir/*.txt; do
   grep "  BA  " $i > $newdir/`basename $i`
done

请注意使用basenamedir/a.txt(比如说​​)并返回a.txt

答案 1 :(得分:1)

听起来像是GNU parallel的工作:

parallel --dry-run grep '"  BA  "' '{} > otherdir/{/}' ::: dir/{a,b,c}.txt

输出:

grep "  BA  " dir/a.txt > otherdir/a.txt
grep "  BA  " dir/b.txt > otherdir/b.txt
grep "  BA  " dir/c.txt > otherdir/c.txt

当您对所看到的内容感到满意时,请移除--dry-run

{}:::之后的输入替换(这些输入也来自stdin或文件),{/}{}的基本名称。