LINUX.ORG.RU

Парсинг многострочного потока в sh

 , , , ,


0

1

Необходимо в shell (HP-UX) разоборать ответ curl-а с заголовками примерно следующим образом. Ответ выглядит так

X-SomeHeader: xxx
X-Header1: abc
X-SomeHeader2: yyy
X-Header2: 756
X-SomeHeader3: zzz

Нужно на выходе получить строку «abc 756» только из X-Header1, X-Header2.


Ответ на: комментарий от EXL

Это сервер HP-UX. На нем работает IBM DataStage, в котором я вызываю curl и хочу получить в том числе информацию из заголовков. Ставить что-то на сервер (тем более python) - долгий и сложный процесс через админов и службы безопасности с обоснованием необходимости.

r_a_vic
() автор топика
curl blah-blah | awk '/X-Header1/ { print $2 } /X-Header2/ { print $2 }'
gremlin_the_red ★★★★★
()

curl ... \
| grep '^X-Header1:\|^X-Header2:' \
| cut -d: -f2
Если перевод строки нужно убрать не средствами оболочки, добавить соответствующую обработку.

bormant ★★★★★
()
Ответ на: комментарий от Deleted

Те, которые мне нужны должны содержать hex-строки.

r_a_vic
() автор топика
Ответ на: комментарий от Deleted

cut -d: -f2- Проверил на HP-UX, умеет. А вот grep придётся так: grep -e '^X-Header1:' -e '^X-Header2:'

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)
Ответ на: комментарий от r_a_vic

Если в заголовках после двоеточия пробел обязателен, то лучше так:

$ curl ... |\
grep '^X-Header1:\|^X-Header2:' |\
cut -d' ' -f2-

bormant ★★★★★
()

Получилось. Спасибо, ЛОР.

r_a_vic
() автор топика

Данные вставил в файл

cat header.txt | grep -E '^X-Header1:|X-Header2' | awk '{print $2}' | paste -s -d ' '

solom
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.