搜索匹配字符串的文本以打印行和匹配字符串

时间:2017-10-27 14:55:41

标签: regex string awk sed grep

我使用awk搜索大文本以匹配字符串。我的目标是打印匹配的字符串,行号和匹配行。我还没有能够实现第一部分(即打印匹配的字符串)。

目前我有:

awk '/string1/string2/string3/{ print NR, $0 }' file_to_search.txt

这会生成行号和匹配行,但不会生成匹配的字符串。

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

你的问题不清楚,但听起来这可能是你想要的:

awk 'match($0,/regexp/){ print substr($0,RSTART,RLENGTH), NR, $0 }' file_to_search.txt

答案 1 :(得分:0)

使用grep,您可以获取行号和匹配的字符串或完整的行(我知道)

grep -wnoF "string1
string2
string3" infile

使用awk,你可以得到你想要的东西

awk '
function findmatch(s,  i) {
 for (i=1;i<=NF;i++)
  {if ($i == s)
   {print "find string = "s,"on line number = "FNR,"Complete line = "$0}};
}
s1{findmatch(s1)}
s2{findmatch(s2)}
s3{findmatch(s3)}
' s1='string1' s2='string2' s3='string3' infile