我有一个充满文件的目录,我需要从中提取页眉和页脚。它们的长度都是可变的,因此使用头部或尾部是行不通的。每个文件确实有一行我可以搜索,但我不想在结果中包含该行。
通常是
*** Start (more text here)
并以
结束*** Finish (more text here)
我希望文件名保持不变,因此我需要覆盖原始文件,或者写入不同的目录,然后我自己覆盖它们。
哦,是的,当然是在 Linux 服务器上,所以我有 Perl、sed、awk、grep 等。
最佳答案
尝试flip flop! “..”运算符。
# flip-flop.pl
use strict;
use warnings;
my $start = qr/^\*\*\* Start/;
my $finish = qr/^\*\*\* Finish/;
while ( <> ) {
if ( /$start/ .. /$finish/ ) {
next if /$start/ or /$finish/;
print $_;
}
}
然后你可以使用 -i perl 开关来更新你的文件,就像这样......
$ perl -i'copy_*' flip-flop.pl data.txt
...更改 data.txt 但预先将其复制为“copy_data.txt”。
关于regex - 如何从文件中提取文本行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/296366/