У меня есть файл, который реплицирует результаты из команды show processlist из mySQL. файл выглядит следующим образом:Использование AWK и определение результатов для переменных bash/массивов?
*************************** 1. row ***************************
Id: 1
User: system user
Host:
db: NULL
Command: Connect
Time: 1030455
State: Waiting for master to send event
Info: NULL
*************************** 2. row ***************************
Id: 2
User: system user
Host:
db: NULL
Command: Connect
Time: 1004
State: Has read all relay log; waiting for the slave
I/O thread to update it
Info: NULL
И продолжает идти на еще несколько раз в одной и той же структуре.
Я хочу использовать AWK только для получения этих параметров: времени, идентификатора, команды и состояния и хранения каждого из этих параметров в другую переменную или массив, чтобы впоследствии использовать/печатать их в своей оболочке bash.
Проблема в том, что я довольно плохой с AWK, я не знаю, как обособлять параметры, которые я хочу от файла, а также устанавливать их как переменную bash или массив.
Большое спасибо за помощь!
EDIT: Вот мой код до сих пор
echo "Enter age"
read age
cat data | awk 'BEGIN{ RS="row"
FS="\n"
OFS="\n"}
{ print $2,$7}
' | awk 'BEGIN{ RS="Id"}
{if ($4 > $age){print $2}}'
Файл «данные» содержит блоки, как я вставил выше. Код должен, если введенный «возраст» меньше, чем параметр «Время» в файле данных (который составляет 4 доллара в моем awk-коде), верните параметр ID, но он ничего не возвращает.
Если удалить, если заявление и напечатать $ 4 вместо $ 2 это мой выход
Enter age
1
1030455
1004
2144
2086
0
Так что я думал, может быть, что пустая строка как-то испортить мой AWK печать? Есть ли простой способ игнорировать эту пустую строку, сохраняя мои другие данные?
Вставьте выход в вопрос, пометьте его мышью, а затем используйте инструмент '{}' на панели инструментов, чтобы пометить его как литеральный код. – Barmar
'awk' не может напрямую устанавливать переменные оболочки. То, что вы можете сделать, это передать вывод 'awk' в оболочку' при чтении var1 var2 var3' loop. – Barmar
Эй, спасибо, thats nifty :) – gotner