【问题标题】:extracting all lines from file that are between two patterns从文件中提取两个模式之间的所有行
【发布时间】:2013-07-10 17:43:01
【问题描述】:

我有一个包含模式的文本文件。' (一个句点后跟一个单引号)和 '. (引号后跟句号)。我想从中提取所有行。至 '。使用 awk 或 grep 。

`lasjdalsjd  
 ljsdlasdkj.'lsjdlsjd  
 wqeuoqweui0  
 90u402394ewlrj  
 lwejwerj  
 '.  
 klfjksldkjfsdlfkj  
 dslfslfkjdsf  

上面我要提取的文字

lsjdlsjd  
wqeuoqweui0  
90u402394ewlrj  
lwejwerj 

分开。我该怎么做?

【问题讨论】:

    标签: shell unix grep


    【解决方案1】:

    使用您提供的示例数据,这是可行的

     awk "/\.'/, /'\./{sub(\".*[.]'\", \"\"); sub(\".*'[.]\", \"\");print}"
    

    【讨论】:

      【解决方案2】:

      使用 sed 你可以做到:

      sed -n "/\.'/,/'\./{s/^.*\.'//; s/'\..*$//; p;}" file
      

      【讨论】:

        【解决方案3】:

        大多数正则表达式库都包含一个多行标志。例如在 Perl 中的“m”标志:

        perl -ne "BEGIN{undef \$/;} print \$1 while (/'(.*?)'/smg)" yourfile
        

        请注意,我已将此特定搜索编码为非贪婪搜索,因此它还会在您的文件中找到多组“..”字符串。

        【讨论】:

          猜你喜欢
          • 2017-04-08
          • 1970-01-01
          • 2017-08-09
          • 2017-07-30
          • 1970-01-01
          • 2020-04-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多