2011-11-24 47 views
0

我想打印到屏幕上我的grep结果,我需要它在每行中打印一些var值,然后在同一行中的grep结果等等之一,我的行看起来应该是:bash grep结果var值每行更改

CURRENTURL行号:表达发现

行数和表达我已经有了,它是grep命令,只需要使用var 其中CURRENTURL会之前帮助每个grep行。 谢谢。

PS

如果[ “$ ExpressionValue” == “电子邮件”];然后

ExpressionValue='([[:alnum:]_.-][email protected][[:alnum:]_.-]+?\.[[:alpha:].]{2,6})' 
    grep -E -n -o $ExpressionValue $INDEX 

其他

grep -n -o -a $ExpressionValue $INDEX 

网络

和结果应看起来像这样:

{URL} {line number}:{expression} 

网址,将来自各grep的行之前,我想要的变种,由于

+1

我不知道我理解你的问题。你能向我们展示你正在使用的脚本,以及结果应该是什么样子的例子吗? – larsks

回答

3

你可以(g)awk一样容易做到这一点:如果搜索模式是动态的

export URL="SET_YOUR_URL_HERE" 
awk -v U="${URL}" '/YOUR_SEARCHPATTERN/ {print U " " NR " " $0}' INPUT_FILE 

export URL="SET_YOUR_URL_HERE" 
awk -v U="${URL}" -v PATTERN="YOUR_SEARCHPATTERN" '$0 ~ PATTERN {print U " " NR " " $0}' INPUT_FILE 

如果只想打印匹配图案:

awk -v U="${URL}" -v PATTERN="YOUR_SEARCHPATTERN" '$0 ~ PATTERN {print U " " NR " " gensub(".*(" PATTERN ").*","\\1","g",$0)}' INPUT_FILE 

注意:上述解决方案将只打印每行一个事件!

随着grep

export URL="SET_YOUR_URL_HERE" 
grep -n PATTERN INPUT_FILE | while read line ; do 
     printf "%s\t%s" "${URL}" "${line}" 
done 

HTH

+0

我有动态模式,这是一个var值,awk的东西很好,但我只需要显示匹配的表达式不是整行,因为-o在grep中,有可能吗? –

+0

为什么是,答案已更新。 –