Используемый вами часовой пояс должен быть указан в/etc/TZ
/tmp/TZ
существует /etc/TZ
. Если нет, скопируйте файл TZ
из /tmp
в /etc
Я вполне уверен, что /etc/config/timezone
даже не нужен.
После проверки ввода текста OP (см. комментарий ), я смог получить исходный хорошо отформатированный текст, который выглядит следующим образом:
[H00,P00001121] CHANNEL__OPEN:TCP_ADDRESS='10.32.130.202' TCP_PORT='80'"
[H00,P00001121] COMMS_QUEUING:RECV='01/08/2019 14:33:45.064410' QUEUE_TIME='00000.000' TO_DEV='
[H00,P00001121] FROM_EXCHANGE:HTTP/1.1 200 OK\r\n
Server: Apache-Coyote/1.1\r\n
Content-Type: text/xml;charset=UTF-8\r\n
Content-Length: 878\r\n
Date: Thu, 01 Aug 2019 04:33:45 GMT\r\n
\r\n
[H00,P00001121] CONTEXT=PARAMETER : CLIENTID =>
[H00,P00001121] CONTEXT=PARAMETER : TRANSACTIONID => 20190801143344970"
[H00,P00001121] CONTEXT=PARAMETER : KEY_TYPE => SERVICEID
[H00,P00001121] CONTEXT=PARAMETER : ORDERSOURCESYSTEM =>
Предположим, что текст выглядит примерно так (Я обновлю свой ответ после того, как предоставленный текст будет отредактирован -обновлен)
Вы можете (предположить, что ваш ввод текста называетсяex1
cat ex1 | grep -P '\\r\\n|P00001121'
и вы получите:
[H00,P00001121] CHANNEL__OPEN:TCP_ADDRESS='10.32.130.202' TCP_PORT='80'"
[H00,P00001121] COMMS_QUEUING:RECV='01/08/2019 14:33:45.064410' QUEUE_TIME='00000.000' TO_DEV='
[H00,P00001121] FROM_EXCHANGE:HTTP/1.1 200 OK\r\n
Server: Apache-Coyote/1.1\r\n
Content-Type: text/xml;charset=UTF-8\r\n
Content-Length: 878\r\n
Date: Thu, 01 Aug 2019 04:33:45 GMT\r\n
\r\n
[H00,P00001121] CONTEXT=PARAMETER : CLIENTID =>
[H00,P00001121] CONTEXT=PARAMETER : TRANSACTIONID => 20190801143344970"
[H00,P00001121] CONTEXT=PARAMETER : KEY_TYPE => SERVICEID
[H00,P00001121] CONTEXT=PARAMETER : ORDERSOURCESYSTEM =>
Тем не менее, что-то подсказывает мне, что вы, возможно, ищете что-то еще, например, получение только текста выбранной строки или, возможно, некоторую дополнительную группировку, если это так, пожалуйста, обновите свой вопрос.
Пара трюков, которые я использовал с выводом, подобным вашему.
grep
Обратите внимание, что нужные вам строки не содержат строку P00001121
. Зная это, вы можете grep
показать все строки, где эта строка отсутствует:
$ grep -v P00001121 afile
Server: Apache-Coyote/1.1\r\n
Content-Type: text/xml;charset=UTF-8\r\n
Content-Length: 878\r\n
Date: Thu, 01 Aug 2019 04:33:45 GMT\r\n
\r\n
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/>
sed
Вы можете использовать sed
для выбора всех строк между двумя паттернами. Здесь я использую sed -n
, чтобы подавить поведение sed
по умолчанию для печати каждой строки ввода. Затем мы сообщаем sed
о том, что нужно сопоставить любые строки между двумя шаблонами, а затем печатать их(/p
).
$ sed -n '/pattern1/,/pattern2/p' afile
$ sed -n '/^.*Server/,/^\\r\\n/p' afile
Server: Apache-Coyote/1.1\r\n
Content-Type: text/xml;charset=UTF-8\r\n
Content-Length: 878\r\n
Date: Thu, 01 Aug 2019 04:33:45 GMT\r\n
\r\n
Это можно сделать с помощью grep
, awk
или sed
.
grep -v H00 file.txt
Этот переключатель -v
выводит все строки, не содержащие эту строку.
sed -n '/Server/,/soap/p' file.txt
Это печатает строки между строками, содержащими эти строки.
awk '/Server/','/soap/' file.txt
Это выводит строки между строками, содержащими эти строки, как и выше, но использует awk
.
Все они дают желаемый результат.