Я работаю над script, чтобы получить определенный текст из файла журнала и отправить его в html файл. Проблема, с которой я сталкиваюсь, заключается в том, что я хотел бы, чтобы каждый результат grep находился внутри тегов <p></p>
.
Вот что я до сих пор:
cat my.log | egrep 'someText|otherText' | sed 's/timestamp//'
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
Используйте sed
для обертывания строк:
cat my.log | egrep 'someText|otherText' | sed -e 's/timestamp//' -e 's/^/<p>/' -e 's#$#</p>#'
Вы можете использовать -e
для выполнения нескольких операций в каждой строке. ^
соответствует началу строки, $
соответствует концу строки.
Здесь версия с одним sed:
sed -n 's#\(timestamp\)\(.*\)\(someText\|otherText\)\(.*\)#\<p\>\2\3\4\<\\p\>#p' my.log