打印' x'使用awk匹配单词之后的单词

时间:2015-08-25 04:18:31

标签: regex awk

我正在搜索文本文件中的特定单词。以下命令将返回该文本文件中的每个匹配项

awk '/text_to_be_searched/ { match($0, /text_to_be_searched/); print ( NR-1"-----"$0) ;}' filename.txt 

但现在我必须只展示' x'第一次出现的匹配单词之前和之后的单词数。

2 个答案:

答案 0 :(得分:1)

您可以使用grep代替

grep -Eo -m 1 '.{x}pattern.{y}' pattern files

x是模式之前要匹配的单词

y是模式后匹配的单词

-m 1表示返回第一场比赛

注意:模式中的任何正则表达式特殊字符都应该被转义,否则它将被解释为正则表达式

答案 1 :(得分:0)

要求救援

awk -v word="your word here" '{
     for(i=1;i<=NF;i++) 
        if(match($i,word)) 
         {m=i; break}
     } 
     m {
       for(i=m-3;i<=m+3;i++) 
          if(i>0 && i<=NF) print $i; 
       exit
     }'
如果有第一个匹配,

将在第一个匹配之前和之后打印3个单词。这个范围的背景是一条线。如果您要扩展为完整段落,请添加-vRS=