результаты bash grep с изменением значения переменной в каждой строке - PullRequest
0 голосов
/ 24 ноября 2011

Я хочу вывести на экран мои результаты grep, мне нужно, чтобы в каждой строке было напечатано какое-то значение var, а затем в той же строке одно из результатов grep и т. Д., Мои строки должны выглядеть так:

Номер строки CurrentURL: выражение найдено

номер строки и выражение, которое у меня уже есть, это команда grep, просто нужна помощь с переменной, в которой CurrentURL будет перед каждой строкой grep.спасибо.

ps

if ["$ ExpressionValue" == "email"]; затем

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

else

  grep -n -o -a $ExpressionValue $INDEX

fi

и результаты должны выглядеть следующим образом:

{URL} {line number}:{expression}

URL будут приходить от переменной, которую я хочу, перед каждой строкой grep, спасибо

1 Ответ

3 голосов
/ 24 ноября 2011

Вы можете сделать это легко с (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

НТН

...