首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在regexp之间选择性打印

在regexp之间选择性打印
EN

Stack Overflow用户
提问于 2011-10-14 06:48:58
回答 4查看 176关注 0票数 0

我需要从REGEXP捕获文本文件的CSV部分,直到第二个空行。如下所示:

代码语言:javascript
复制
garbage garbage
garbage garbage
garbage garbage

REGEXP

data,data,data
data,data,data

garbage garbage
garbage garbage
garbage garbage

任何关于如何在sed或perl中实现这一点的想法都将非常受欢迎。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-14 07:06:18

代码语言:javascript
复制
perl -ne '$on=1 if /REGEXP/; if ($on) { print; $blank++ if /^\s*$/; last if $blank == 2 }' file.csv

将显示:

代码语言:javascript
复制
    REGEXP

data,data,data
data,data,data

如果您不想显示REGEXP

代码语言:javascript
复制
perl -ne '$on=1 and next if /REGEXP/; if ($on) { print; $blank++ if /^\s*$/; last if $blank == 2 }' file.csv
票数 1
EN

Stack Overflow用户

发布于 2011-10-14 07:07:54

代码语言:javascript
复制
perl -00 -ne 'print, print(scalar <>), exit if /REGEXP/' file.txt
票数 3
EN

Stack Overflow用户

发布于 2011-10-14 07:05:31

如下所示:

代码语言:javascript
复制
#!/usr/bin/perl

use warnings; use strict;

while (<DATA>) {
    /^REGEXP/ and last;
}

my $csv_line;

while ($csv_line = <DATA>) {
    $csv_line =~ /,/ and last;
}

while (defined($csv_line) and $csv_line =~ /\S/) {
    process_csv($csv_line);
    $csv_line = <DATA>;
}

sub process_csv {
    my ($line) = @_;
    print $line;
}


__DATA__
garbage garbage
garbage garbage
garbage garbage

REGEXP

data,data,data
data,data,data

garbage garbage
garbage garbage
garbage garbage
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7761330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档