sed multiline pygmentize - PullRequest
       7

sed multiline pygmentize

0 голосов
/ 27 марта 2012

Я хотел бы взять кусок html и передать его пигментированию, чтобы соответствующим образом раскрасить. Мне интересно, как я мог бы использовать sed или какой-либо другой инструмент Cli, чтобы добиться этого.

Я попробовал несколько однострочников sed и попытался использовать следующие SO вопросы:

У меня есть следующий журнал:

<code>2012-03-26 18:04:27,385 9372 [main] ERROR web.commons.exception.ServiceInvocationException  - 
Response from server cannot be decoded to JSON, responsePayload = <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>Error 404 Not Found</title>
</head>
<body><h2>HTTP ERROR 404</h2>
<p>Problem accessing jetty-url. Reason:
<pre>    Not Found
<ч /> Работает на причале: //



















org.codehaus.jackson.JsonParseException: непредвиденный символ ('

ОБНОВЛЕНИЕ Я добавляю это к более длинной команде:

mvn -U test | (while read line; do echo ${line} | sed -e "s/.*ERROR.*/`echo -e '\e[91m&\e[0m'`/g" -e "s/.*\(WARN|INFO\).*/`echo -e '\e[93m&\e[0m'`/g"; done)

Ответы [ 3 ]

2 голосов
/ 27 марта 2012

кошачий журнал | awk '/ /, / <\ / html> /'

Должен это сделать.

Чтобы удалить «дерьмо» перед первым html-тегом, используйте sed, чтобы поместить html-тег в собственную строку.

кошачий журнал | sed 's / / \ n /' | awk '/ /, / <\ / html> /'

0 голосов
/ 11 января 2013

Я использовал это как часть более длинной команды:

mvn -U test | (while read line; do echo ${line} | sed -e "s/.*ERROR.*/`echo -e '\e[91m&\e[0m'`/g" -e "s/.*\(WARN|INFO\).*/`echo -e '\e[93m&\e[0m'`/g"; done)
0 голосов
/ 27 марта 2012

TXR:

В целях иллюстрации мы заменим pygmentize командой, которая заменяет каждую букву в HTML на X.

@;; replace with .e.g. pygmentize
@(bind filter "tr [A-Za-z] X")
@date @time @pid [@function] @error_1
@error_2 <html>
@(collect)
@stuff
@(last)
</html>
@(end)

@error_3
@(output)
@date @time @pid [@function] @error_1
@error_2
@(end)
@(output `!@filter`)
<html>
@{stuff "\n"}
</html>
@(end)
@(output)
@error_3
@(end)

Тестовый прогон:

$ txr  log.txr  log.txt
2012-03-26 18:04:27,385 9372 [main] ERROR web.commons.exception.ServiceInvocationException  -
Response from server cannot be decoded to JSON, responsePayload =
<XXXX>
<XXXX>
<XXXX XXXX-XXXXX="XXXXXXX-XXXX" XXXXXXX="XXXX/XXXX; XXXXXXX=XXX-8859-1"/>
<XXXXX>XXXXX 404 XXX XXXXX</XXXXX>
</XXXX>
<XXXX><X2>XXXX XXXXX 404</X2>
<X>XXXXXXX XXXXXXXXX XXXXX-XXX. XXXXXX:
<XXX>    XXX XXXXX</XXX></X><XX /><X><XXXXX>XXXXXXX XX XXXXX://</XXXXX></X><XX/>
<XX/>
<XX/>
<XX/>
<XX/>
<XX/>
<XX/>
<XX/>
<XX/>
<XX/>
<XX/>
<XX/>
<XX/>
<XX/>
<XX/>
<XX/>
<XX/>
<XX/>
<XX/>
<XX/>

</XXXX>
</XXXX>
org.codehaus.jackson.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
...