1

Есть файл со строками вида:

< [2015-02-19  13:06:10.299] [GS:199] [LN:1] [LT:A] [ADR:.B-5918] [ACARS:10] [SZ:83] [CRC:N] [UD:D] [SQP:0]

< [2015-02-19  13:06:28.674] [GS:199] [LN:1] [LT:A] [ADR:] [ACARS:SQ] [SZ:74] [CRC:Y] [UD:U]

< [2015-02-19  13:06:36.834] [GS:199] [LN:1] [LT:A] [ADR:.D-AIHF] [ACARS:Q0] [SZ:28] [CRC:Y] [UD:D] [SQP:0]

Необходимо разобрать строки и занести значения в соответствующие переменные:

1) время в первых квадратных скобках;
2) в переменную gs ее значение из вторых скобок;
3) в переменную ln ее значение из третьих скобок и т.д.

Некоторые переменные могут отсутствовать в некоторых строчках (в примере выше во второй строке отсутствует переменная sqp).

Помогите или направьте в сторону того, чем это можно разобрать.
Заранее спасибо.

1 ответ 1

3
$ IFS='[]' read sp time sp gs sp ln sp etc <<< '[2015-02-19 13:06:36.834] [GS:199] [LN:1] [LT:A] [ADR:.D-AIHF] [ACARS:Q0] [SZ:28] [CRC:Y] [UD:D] [SQP:0]'
$ echo $time/$gs/$ln/$etc
2015-02-19 13:06:36.834/GS:199/LN:1/LT:A] [ADR:.D-AIHF] [ACARS:Q0] [SZ:28] [CRC:Y] [UD:D] [SQP:0]
$ help read

там ещё много полезного прочитаете

1
  • Для дальнейшего разбора. Команда case поможет разобрать варианты получаемых значений "файловыми" шаблонами. На счёт другого подхода советую посмотреть в man bash что касается команды [[ операции =~ и переменной BASH_REMATCH.
    – sercxjo
    27 фев 2015 в 9:46

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.