nixp.ru v3.0

19 октября 2017,
четверг,
12:10:20 MSK

DevOps с компанией «Флант»
Okean написал 31 января 2005 года в 14:55 (417 просмотров) Ведет себя неопределенно; открыл 3 темы в форуме, оставил 3 комментария на сайте.

Добрый день!

Помогите пожалуйста написать скрипт на AWK для разбора логов.

Дело в том, что в логах нет строгой формы по полям.

Вот куски. Количество полей разное.

25 Jan 15:16:33: [ 5151]:ERR06:MSG: 005 «050125 151451 0e 0000000000000020 0/1/0 [Trans not complete] [3(-4)-write err.,1,050125151441,025403,1189,03,9554] [040080003D0C87016600]» [J025403]

25 Jan 15:37:19: [ 5272]:ERR06:MSG: 005 «050125 153620 40 0000000000809041 1/1/0 [Disp failure] [SBDISP(RD) R(02000101) F(CCNG.CngDispen)] [01A01805050500003D5A]» [J019661]

25 Jan 15:46:46: pos16 [ 5360]:ERR06:MSG: 005 «050125 154644 07 0000000000000021 1/0/0 [Cover door opened] [doors: 1nn,0]» [J025403]

Хотелось бы на выходе в другом файле увидеть:

25 Jan 15:16:33 [Trans not complete] [J025403]

25 Jan 15:37:19 [Disp failure] [J019661]

25 Jan 15:46:46 [Cover door opened] [J025403]

Очень -очень нужно.

За ранее спасибо.

Genie

рассказать, что именно надо написать?

или будет достаточно того, что можно сделать?

я бы вот, при разглядывании логов, задал бы разделитель полей в », из первого получившегося поля выдернул (by gsub или substr) дату/время, соответственно, из второго поля — первое между квадратными скобками, ни и третье поле автоматом как есть.

`man awk` должно быть для этого более чем достаточно. ;)

Okean

Спасибо даже за такие советы.

Дело в том, что я в этом новичок и был бы очень благодарен, если ты напишешь, что именно надо написать.

Спасибо.

Genie

нее. самому тоже надо учиться.

$ cat file.log | awk 'BEGIN{FS="\""} {gsub(/: .*/,"",$1); split($2,a,"[\[\]]"); printf "%s [%s] %s\n",$1,a[3],$3}'

в качестве задания на понимание, расписать описанное.

ps: в команду внесены 2 ошибки (специально). найти — это тоже задание ;))

Okean

Огромное спасибо!

Половина понятно, половина нет, но я из кожи вон вылезу, но расшифрую все. : )

Еще раз спасибо.