我使用awk搜索大文本以匹配字符串。我的目标是打印匹配的字符串,行号和匹配行。我还没有能够实现第一部分(即打印匹配的字符串)。
目前我有:
awk '/string1/string2/string3/{ print NR, $0 }' file_to_search.txt
这会生成行号和匹配行,但不会生成匹配的字符串。
感谢任何帮助。
答案 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