2011-11-24 52 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

爲什麼是,答案已更新。 –