jq предоставляет богатый язык выражений для выбора элементов из документа JSON.
Таким образом, она аналогична команде sel
из xmlstartlet
(которая принимает выражение XPath).
Например, чтобы извлечь список доступных версий ядра CentOS 7 в цифровом океане - в формате записи:
$ jq '[ .kernels[] | select(.name | test("^CentOS 7 x64")) | del(.name)
| "\(.version) \(.id)"] | .[]' kernels.json
Или то же самое, немного упрощенное:
jq '.kernels[] | select(.name | test("^CentOS 7 x64")) |
"\(.version) \(.id)" ' kernels.json
Где json можно получить следующим образом:
$ curl -o kernels.json -X GET -H "Content-Type: application/json" \
-H "Authorization: Bearer $bearer" \
"https://api.digitalocean.com/v2/droplets/$droplet/kernels?page=1&per_page=1000"
Существует также ObjectPath , другой язык запросов для JSON, хотя jq кажется более доступным (например, он упакован в Fedora 23).
Повторное использование таких фрагментов запроса в программах легко, например существует несколько привязок для jq (например, для Python ), а ObjectPath также доступен как модуль Python.
Вы можете использовать ip addr
для отображения IP-адресов всех интерфейсов и подсетей на вашем хосте:
$ ip -f inet addr show | awk '$1 == "inet" { print $2 }'
127.0.0.1/8
192.168.0.2/24
Если вам не нужна подсеть, вы можете удалить ее:
$ ip -f inet addr show | awk '$1 == "inet" { print $2 }' | cut -d/ -f1
127.0.0.1
192.168.0.2
Согласно комментарию, если вы хотите по какой-то причине видеть только третий октет вашего IP-адреса (es ), это достаточно просто:
# given this:
$ ip -f inet addr show | awk '$1 == "inet" { print $2 }'
127.0.0.1/8
192.168.25.2/24
# we can do this:
$ ip -f inet addr show | awk '$1 == "inet" { print $2 }' | cut -d. -f3
0
25
Я нашел ответ, ребята Я объясню i = 1, потому что это
i=1
if [ $i = 1 ]; then
echo $i good1
else
echo $i notGood2
fi
Вот чего я хочу В любом случае вы оба помогли получить правильный ответ, ребята! Спасибо
#!/bin/bash
for i in $(/sbin/ifconfig | grep inet | awk '{print $2}')
do
if [[ $i =~ ^[0-9]{1,3}\.[0-9]{1,3}\.1|0.[0-9]{1,3}$ ]]; then
echo "$i good1"
else
echo "$i notGood2"
fi
done