在perl脚本中使用grep并将管道输出到不同的文件

时间:2012-10-19 14:54:18

标签: perl grep

我想打开标识符列表并在另一个文件中查找匹配项。为此,我使用grep作为带有每个脚本的系统函数。但我不知道我哪里出错了。你能帮我解决一下语法吗?谢谢你的时间!

open F, "$ARGV[0]" or die;
while(<F>)
{
    `grep -A1 "$_" CAM_PROJ_BATS.read.fa > $_.txt`;
} 

1 个答案:

答案 0 :(得分:2)

如果您期望输出,则不会看到任何输出,因为您没有打印任何内容。添加print语句以查看输出。 (您可能不需要查看输出,但至少它会帮助您查看grep命令的错误。)

此外,输入文件的行最后会有换行符。你可能不想把它传递给grep。实际上,添加换行符甚至可能会破坏shell上命令的执行。使用chomp删除换行符。

use strict;
use warnings;

open F, "$ARGV[0]" or die "Can't open file: $!";
while(<F>)
{
    chomp;
    print `grep -A1 "$_" CAM_PROJ_BATS.read.fa > $_.txt`;
} 

(未经测试,因为我没有grep)。