2011-11-24 4 views
0

화면에 내 grep 결과를 인쇄하고 싶습니다. 각 행에 var 값을 인쇄 한 다음 grep 결과와 같은 행에 하나씩 출력해야합니다. 이 같아야합니다 :bash grep 결과가 각 행을 변경합니다.

CURRENTURL 행 번호 : 표현

내가 이미 가지고있는 줄 번호와 표현을 발견, 그냥 CURRENTURL 전에 될 것입니다있는 VAR 도움이 필요, grep 명령이다 각 grep 라인. 덕분에 .

PS

경우 [ "$ ExpressionValue"== "이메일"] 다음 다른

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

grep -n -o -a $ExpressionValue $INDEX 

Fi를

결과 정상적으로 다음과 같이 보입니다.

{URL} {line number}:{expression} 
내가 각 그렙 라인 전에 원하는 VAR에서 올 것이다

URL을, 감사

+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

나는 dinamic 패턴을 가지고있다. 그것은 var 값이다. awk는 좋지만 grep에서 -o와 같이 일치하는 표현식 만 표시하면된다. 가능하다? –

+0

왜 그렇습니까? 답변이 업데이트됩니다. –