如何使用 awk 或 sed 注释多行



我有一个perl程序,我正在下载并在docker文件中使用。

该程序正在调用tbl2asn但我不需要输出,并且这部分运行很长时间。因此,我想从这个perl程序中评论几行。

runcmd(
  "tbl2asn -V b -a r10k -l paired-ends -M n -N 1 -y 'Annotated using $EXE $VERSION from $URL' -Z".
  " Q$outdir/$prefix.errE -i Q$outdir/$prefix.fsaE 2> /dev/null"
);
delfile("$outdir/errorsummary.val");
delfile( map { "$outdir/$prefix.$_" } qw(dr fixedproducts ecn val) );
msg("Repairing broken .GBK output that tbl2asn produces...");
runcmd("sed 's/COORDINATES: profile/COORDINATES:profile/' < Q$outdir/$prefix.gbfE > Q$outdir/$prefix.gbkE");
delfile("$outdir/$prefix.gbf");

这些是我想评论的行,至少这一行"tbl2asn -V b -a r10k -l paired-ends -M n -N 1 -y 'Annotated using $EXE $VERSION from $URL' -Z".在perl程序中只出现一次。

如何使用 awk 或 sed 通过正则表达式(之前一行和之后八行(注释此行?

谢谢。

Awk解决方案:

样本file.pl

some text
runcmd(
  "tbl2asn -V b -a r10k -l paired-ends -M n -N 1 -y 'Annotated using $EXE $VERSION from $URL' -Z".
  " Q$outdir/$prefix.errE -i Q$outdir/$prefix.fsaE 2> /dev/null"
);
delfile("$outdir/errorsummary.val");
delfile( map { "$outdir/$prefix.$_" } qw(dr fixedproducts ecn val) );
msg("Repairing broken .GBK output that tbl2asn produces...");
runcmd("sed 's/COORDINATES: profile/COORDINATES:profile/' < Q$outdir/$prefix.gbfE > Q$outdir/$prefix.gbkE");
delfile("$outdir/$prefix.gbf");
some text

awk '/"tbl2asn -V b .+ -Z".$/{ n = NR + 9 }NR <= n{ rec = "#"rec }
     rec{ print rec }{ rec = $0 }
     END{ print rec }' file.pl

输出:

some text
#runcmd(
#  "tbl2asn -V b -a r10k -l paired-ends -M n -N 1 -y 'Annotated using $EXE $VERSION from $URL' -Z".
#  " Q$outdir/$prefix.errE -i Q$outdir/$prefix.fsaE 2> /dev/null"
#);
#delfile("$outdir/errorsummary.val");
#delfile( map { "$outdir/$prefix.$_" } qw(dr fixedproducts ecn val) );
#
#msg("Repairing broken .GBK output that tbl2asn produces...");
#runcmd("sed 's/COORDINATES: profile/COORDINATES:profile/' < Q$outdir/$prefix.gbfE > Q$outdir/$prefix.gbkE");
#delfile("$outdir/$prefix.gbf");
some text

最新更新