Часть II • Защитные операции с использованием bash
"edition": 1,
"authors": [
{
"firstName": "Paul",
"lastName": "Troncone"
},
{
"firstName": "Carl",
"lastName": "Albing"
}
]
}
.Это.объект..Объекты.начинаются.с.символа.
{
.и.заканчиваются.символом.
}
.
.Пара.«имя/значение»..Значениями.могут.быть.строка,.число,.массив,.логическое.
значение.или.
null
.
.Это.массив..Массивы.начинаются.с.символа.
[
.и.заканчиваются.символом.
]
.
Для получения дополнительной информации о формате JSON посетите веб-
страницу http://json.org/.
При.обработке.JSON,.вероятно,.потребуется.извлечь.пары.«ключ/значение»,.что.
можно.сделать.с.помощью.команды.
grep
..Для.извлечения.пары.«ключ/значение».
firstName
.из.
book.json
.выполните.следующую.команду:
$ grep -o '"firstName": ".*"' book.json
"firstName": "Paul"
"firstName": "Carl"
Параметр.
-o
.используется.для.возврата.только.тех.символов,.которые.соответству-
ют.шаблону,.а.не.всей.строке.файла.
Если.вы.хотите.удалить.ключ.и.вывести.только.значение,.можете.передать.вы-
вод.команде.
cut
,.а.затем.с.помощью.команды.
tr
.извлечь.второе.поле.и.удалить.
кавычки:
$ grep -o '"firstName": ".*"' book.json | cut -d " " -f2 | tr -d '\"'
Paul
Carl
Мы.выполним.более.сложную.обработку.JSON.в.главе.11.
Глава 6. Обработка данных
107
JQ
jq
.—.это.мощный.легкий.язык.и.JSON-анализатор,.предназначенный.для.командной.
строки.Linux..Но.по.умолчанию.он.в.большинстве.версий.Linux.не.установлен.
Чтобы.с.помощью.
jq
.получить.ключ.заголовка.
book.json
,.выполните.следующее:
$ jq '.title' book.json
"Cybersecurity Ops with bash"
Для.перечисления.имен.всех.авторов.введите.такую.команду:
$ jq '.authors[].firstName' book.json
"Paul"
"Carl"
Поскольку.имена.авторов.представляют.собой.массив.JSON,.при.обращении.к.нему.
необходимо. добавить.
[]
.. Для. доступа. к. определенному. элементу. массива. исполь-
зуйте.индекс,.начиная.с.позиции.0.(
[0]
.для.доступа.к.первому.элементу.массива)..
Для.доступа.ко.всем.элементам.массива.укажите.
[]
.без.индекса.
Для.получения.дополнительной.информации.о.
jq
.посетите.сайт.
http://bit.ly/2HJ2SzA
.
Агрегирование данных
Данные.часто.собираются.из.различных.источников,.а.также.из.различных.фай-
лов,.сохраненных.в.разных.форматах..Прежде.чем.вы.сможете.проанализировать.
данные,.вы.должны.собрать.их.в.определенном.месте.и.в.формате,.позволяющем.
провести.анализ.
Предположим,.вы.хотите.найти.в.хранилище.файлов.любой.системы.данные.с.име-
нем.
ProductionWebServer
..Напомним,.что.в.предыдущих.сценариях.мы.упаковы-
вали.собранные.данные.в.теги.XML.в.следующем.формате:.
..
Во.время.сбора.информации.мы.давали.имена.нашим.файлам,.используя.имя.хоста..
Теперь.вы.можете.указать.любой.из.этих.атрибутов,.чтобы.найти.и.объединить.
данные.в.одном.месте:
find /data -type f -exec grep '{}' -e 'ProductionWebServer' \;
-exec cat '{}' >> ProductionWebServerAgg.txt \;
Команда.
find
.
/data
.
-type
.
f
.выводит.список.всех.файлов.в.каталоге.
/data
.и.его.под-
каталогах..Для.каждого.найденного.файла.запускается.команда.
grep
,.чтобы.найти.
108
Do'stlaringiz bilan baham: |