Команда AWK для печати шаблона, как показано ниже, из предоставленного шаблона - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть шаблон, как показано ниже:

Шаблон в файле Unix: {1.11.111.111 - 2017-10-06T00:00:00+00:00 111111 1 302 "GET /abcd/z1/bcdfgggg?values" uri="/abcd/v2/nano" 111 111 0 "-" "abcd/2.1.0 (Linux; U; Android 8.1.0; Redmi Note 6 Pro MIUI/V10.2.2.0.bcdwvc)" "1111:1111:111:1111:11:d11e:c11c:111a" cu=0.011 nano=0.011 var="-12345" "1111:1111:111:1111:11:d11e:c11c:111a, 11.111.111.111"}

Я пытаюсь напечатать нижерезультат, но результат не распечатывается должным образом.

Код: Cat test.txt | awk -F'"' '{ print $1,$9}' |awk -F' ' '{ print $3,$6,$24}'

Фактический результат : 2017-10-06T00:00:00+00:00 302

Ожидаемый результат : 2017-10-06T00:00:00+00:00 302 cu=0.011

Ответы [ 2 ]

1 голос
/ 07 ноября 2019

При условии, что запись журнала будет всегда выглядеть так, как представлено ОП:

pattern='{1.11.111.111 - 2017-10-06T00:00:00+00:00 111111 1 302 "GET /abcd/z1/bcdfgggg?values" uri="/abcd/v2/nano" 111 111 0 "-" "abcd/2.1.0 (Linux; U; Android 8.1.0; Redmi Note 6 Pro MIUI/V10.2.2.0.bcdwvc)" "1111:1111:111:1111:11:d11e:c11c:111a" cu=0.011 nano=0.011 var="-12345" "1111:1111:111:1111:11:d11e:c11c:111a, 11.111.111.111"}'

awk -F ' ' '{print $3,$6,$25}' <<< "$pattern"

Вывод: 2017-10-06T00:00:00+00:00 302 cu=0.011

1 голос
/ 06 ноября 2019

С GNU sed и регулярным выражением с тремя обратными ссылками:

sed -r 's/.* ([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9:+]{14}) [0-9]+ [0-9]+ ([0-9]{3}) .*(cu=[0-9.]+).*/\1 \2 \3/' file

Вывод:

2017-10-06T00:00:00+00:00 302 cu=0.011

См .: FAQ по регулярным выражениям переполнения стека

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...