1

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

grep "  BA  "  dir/*.txt
4

2 回答 2

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

注意basename的使用,它接受dir/a.txt(比如说)并返回a.txt

于 2012-11-29T16:01:09.347 回答
1

听起来像是 GNU 并行的工作:

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当您对所看到的内容感到满意时移除。

{}被替换为之后的输入:::(这些也可以来自标准输入或文件),{/}{}.

于 2012-11-29T19:57:44.303 回答