从文件中提取两个模式之间的所有行

时间:2013-07-10 17:43:01

标签: shell unix grep

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

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

在上面的文字中我想提取

lsjdlsjd  
wqeuoqweui0  
90u402394ewlrj  
lwejwerj 

分开。我怎么能这样做?

3 个答案:

答案 0 :(得分:0)

使用您提供的样本数据,

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

答案 1 :(得分:0)

使用sed你可以这样做:

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

答案 2 :(得分:0)

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

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

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