用perl脚本,检索第一个文本,如果某行有ABC,则在文本开头输入以下5行固定,再打印出有ABC的哪一行和它的下一行。再打印固定的两行。遍历整个文档,每一个都这么操作。 同时保留ABC前后为空格的字符串。打开里面一个文档,匹配字符串把每一个字符串前面加上一串字符串。
时间: 2024-10-25 07:04:59 浏览: 21
在Perl中,你可以使用正则表达式(regex)配合文件处理功能来实现这个需求。首先,你需要读取文件内容,然后检查每一行是否包含"ABC"。如果找到匹配的行,就在其前插入指定的固定行,并打印出来。下面是步骤概述:
1. 打开并读取文件:
```perl
open(my $fh, '<', 'input.txt') or die "无法打开文件: $!";
my @lines = <$fh>;
close($fh);
```
2. 定义要在匹配行之前插入的固定行:
```perl
my @prefix_lines = (
'这是固定行1',
'这是固定行2',
'这是固定行3',
# 可能还有更多行...
);
# 用于存储处理后的行数组
my @processed_lines;
```
3. 遍历文件行,查找并处理包含"ABC"的行:
```perl
foreach my $line (@lines) {
if ($line =~ /(\s*)ABC(\s*)/) { # 使用正则匹配"ABC"及其前后空格
push @processed_lines, @prefix_lines; # 插入固定行
print "原始行: $line\n"; # 打印原行
print "匹配行: $_\n"; # 打印匹配到的行
push @processed_lines, $1; # 还原匹配的行,加上空格
push @processed_lines, $2;
} else {
push @processed_lines, $line; # 没有"ABC"就直接添加
}
}
```
4. 输出结果:
```perl
# 打印处理后的所有行,保留原来的顺序
foreach my $line (@processed_lines) {
print "$line\n";
}
```
阅读全文