regex - 如何从文件中提取文本行?

标签 regex perl sed awk grep

我有一个充满文件的目录,我需要从中提取页眉和页脚。它们的长度都是可变的,因此使用头部或尾部是行不通的。每个文件确实有一行我可以搜索,但我不想在结果中包含该行。

通常是

*** 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/

相关文章:

javascript - 正则表达式说明

java - Java 中的正则表达式 : a*

javascript - 正则表达式将输入标签从表单中提取出来

perl - 安装 perl 模块时不能使用数组作为引用

Perl:使用 glob 对具有用户定义长度的数组中的值进行排列

linux - 监视多个目录以创建文件;如果它们不存在,请发送电子邮件

python - 从 pdffonts 命令输出中仅获取第三列和第六列

shell - 如何替换文本中的所有下划线,但 Unix Shell 中属于特定单词或模式的下划线除外

linux - 使用 sed 获取日期

python - 正则表达式 re.findall() 挂起 - 如果您无法逐行阅读怎么办