我有一个文件包含很多部分,但我想删除除A部分以外的所有部分。 例如:
Section A
abcdefg
Section B
hijklmn
Section C
opqrstu
可以编写任何Perl脚本来删除B和C中的所有内容吗?
答案 0 :(得分:1)
您可以使用段落模式按部分读取文件,然后只使用正则表达式匹配来验证要保留的部分名称。
perl -00 -ne 'print if /^Section A/' -- file
答案 1 :(得分:0)
@Choroba确实为你提供了一个内容,所以这是一个脚本版本
use strict;
use warnings;
local $/ = "";
open(my $in_fh, "<", "inputfile.txt") or die "unable to open inputfile.txt: $!";
open(my $out_fh, ">", "outputfile.txt") or die "unable to open outputfile.txt: $!";
while ( <$in_fh> ) {
print $out_fh $_ if /^Section A/;
}
close $in_fh;
close $out_fh;
这将打开文件inputfile.txt
并以段落模式阅读,找到Section A
并纯粹打印Section A
作为文件outputfile.txt
给出结果
Section A
abcdefg
答案 2 :(得分:0)
我一直认为这样的程序如果坚持使用Unix过滤器模型就会更有用 - 即他们从STDIN
读取并写入STDOUT
。
#!/usr/bin/perl
use strict;
use warnings;
local $/ = ''; # paragraph mode
while (<>) {
print if /^Section A/;
}