我正在搜索文本文件中的特定单词。以下命令将返回该文本文件中的每个匹配项
awk '/text_to_be_searched/ { match($0, /text_to_be_searched/); print ( NR-1"-----"$0) ;}' filename.txt
但现在我必须只展示' x'第一次出现的匹配单词之前和之后的单词数。
答案 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=