Добавьте HTML-теги вокруг каждого результата unix GREP

3

Я работаю над script, чтобы получить определенный текст из файла журнала и отправить его в html файл. Проблема, с которой я сталкиваюсь, заключается в том, что я хотел бы, чтобы каждый результат grep находился внутри тегов <p></p>.

Вот что я до сих пор:

cat my.log | egrep 'someText|otherText' | sed 's/timestamp//'
Теги:
grep

3 ответа

5
Лучший ответ

Использование egrep и sed

В настоящее время у вас есть:

$ echo 'timestamp otherText' | egrep 'someText|otherText' | sed 's/timestamp//'
 otherText

Чтобы поместить паратеги вокруг текста, добавьте только одну подстановку в команду sed:

$ echo 'timestamp otherText' | egrep 'someText|otherText' | sed 's/timestamp//; s|.*|<p>&</p>|'
<p> otherText</p>

Использование awk

$ echo 'timestamp otherText' | awk '/someText|otherText/{sub(/timestamp/, ""); print "<p>" $0 "</p>"}'
<p> otherText</p>

Или, получив входной файл из файла my.log:

awk '/someText|otherText/{sub(/timestamp/, ""); print "<p>" $0 "</p>"}' my.log
4

Используйте sed для обертывания строк:

cat my.log | egrep 'someText|otherText' | sed -e 's/timestamp//' -e 's/^/<p>/' -e 's#$#</p>#'

Вы можете использовать -e для выполнения нескольких операций в каждой строке. ^ соответствует началу строки, $ соответствует концу строки.

2

Здесь версия с одним sed:

sed -n 's#\(timestamp\)\(.*\)\(someText\|otherText\)\(.*\)#\<p\>\2\3\4\<\\p\>#p' my.log

Ещё вопросы

Сообщество Overcoder
Наверх
Меню