我需要找到一种方法,以将GREP匹配的确切坐标从一个文件输出到另一个文件。因此,说"模式"包含要匹配的字符串模式列表。"搜索"是一个基于行的文本(ASCII)文件,其中包含用于搜索的文本。
with:
grep -onf patterns search
我得到了在此行中匹配的行和模式,但在线匹配的线上不匹配,这就是我所需要的。它不仅限于使用GREP,尴尬等也可以!
你们可以帮忙吗?
未经测试:
awk 'NR==FNR{strings[$0]; next} {for (string in strings) if ( (idx = index($0,string)) > 0 ) print string, FNR, idx }' file1 file2
由于您将-f
与GREP一起使用,所以我认为它是您要匹配的字符串,而不是Regexps。
上面只是从第一个文件的内容构建一系列字符串该字符串首先出现在该行上的数字和索引(启动位置)。
使用尴尬可以做:
awk -v s="needle" 'i=index($0, s) {print NR, i}' file
这将打印搜索项目的线路和行位置。
更新:
while read -r line; do
awk -v s="$line" 'i=index($0, s) {print s ":" NR "," i}' searches
done < patterns
或基于纯尴尬:
awk 'FNR==NR{a[$0];next} {for (i in a) {if (p=index($0, i)) print i ":" NR "," p} }' patterns searches