用perl脚本,检索第一个文本,如果某行有ABC,则在文本开头输入以下5行固定,再打印出有ABC的哪一行和它的下一行。再打印固定的两行。遍历整个文档,每一个都这么操作。
时间: 2024-10-25 17:04:59 浏览: 13
在Perl中,你可以使用正则表达式和文件处理函数来实现这样的功能。下面是一个简单的示例脚本,它会读取一个文本文件,检查每一行是否包含"ABC",如果找到,就在该行前面插入固定的5行,并打印出找到的那两行。
```perl
#!/usr/bin/perl
use strict;
use warnings;
# 定义要插入的固定文本
my $fixed_text = <<'END_OF_FIXED_TEXT';
这是固定行1
这是固定行2
这是固定行3
这是固定行4
这是固定行5
END_OF_FIXED_TEXT
open my $file, '<', 'input.txt' or die "无法打开文件: $!";
while (my $line = <$file>) {
# 使用正则匹配"ABC"
if ($line =~ /ABC/) {
print "找到了包含'ABC'的行:$line\n";
print "$fixed_text"; # 插入固定文本
print "$line"; # 打印找到的行
print "\n"; # 打印换行符
print "$fixed_text\n"; # 再次打印固定文本
} else {
print $line; # 如果不是,直接打印当前行
}
}
close $file or warn "无法关闭文件: $!";
```
这个脚本假设你的输入文件名为`input.txt`,并且将固定文本放在`$fixed_text`变量中。运行此脚本时,它会逐行扫描文件,遇到包含"ABC"的行就按照指定的方式处理。
阅读全文