1

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

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

在上面的文字中我要提取

lsjdlsjd  
wqeuoqweui0  
90u402394ewlrj  
lwejwerj 

分别地。我怎样才能做到这一点 ?

4

3 回答 3

0

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

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

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

于 2013-07-10T18:58:47.797 回答
0

使用 sed 你可以:

sed -n "/\.'/,/'\./{s/^.*\.'//; s/'\..*$//; p;}" file
于 2013-07-10T18:26:20.630 回答
0

使用您提供的示例数据,这有效

 awk "/\.'/, /'\./{sub(\".*[.]'\", \"\"); sub(\".*'[.]\", \"\");print}"
于 2013-07-10T17:56:10.703 回答