Π‘Π΅Π³ΠΎΠ΄Π½Ρ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Linux ΠΈΠ»ΠΈ Unix.
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΡΠΈΠ»ΡΠ½ΠΎ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ API ΠΈ ΡΠΏΠΈΡΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JSON.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΏΠΈΡΠΎΠΊ ΡΠΏΠ°ΠΌΠ±ΠΎΡΠΎΠ² ΠΈΠ»ΠΈ VPN CIDR ΠΈΠ»ΠΈ Ρ ΠΎΡΠΎΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΡ IP CIDR Π±ΠΎΡΠΎΠ² β Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JSON.
ΠΡΠ»ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΡΠΌΠ°Ρ JSON, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π·ΡΡΡ ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ ΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π΅Π³ΠΎ Π² ΡΠ²ΠΎΠΉ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡ ΠΈΠ»ΠΈ WAF.
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π΅ Π²ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΡΠΌΠ°Ρ JSON.
ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π·ΡΡΡ ΡΠΎΡΠΌΠ°Ρ JSON ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΡΠΎΡΠΌΠ°Ρ CSV Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π½Π°ΡΠΈΠΌΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡΠΌΠΈ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΎΡΠΌΠ°ΡΡ JSON ΠΈ CSV?
JSON β ΡΡΠΎ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ JavaScript Object Notation.
Π§Π°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ , Π½ΠΎ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ JavaScript.
ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Perl, Python ΠΈΠ»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ CLI, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ jq.
CSV β ΡΡΠΎ Π°Π±Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡΠ° ΠΎΡ Comma-separated values. ΠΡΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡΠ°Ρ , ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ .
ΠΡΠΈΠΌΠ΅Ρ ΡΠΎΡΠΌΠ°ΡΠ° JSON
ΠΠ΄Π΅ΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ df Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JSON:
[ { «fs»: «/dev/mapper/vgubuntu-root», «type»: «ext4», «size»: «915G», «used»: «135G», «avail»: «734G», «usedpercentage»: «16%», «mounted»: «/» }, { «fs»: «/dev/nvme0n1p2», «type»: «ext4», «size»: «1.4G», «used»: «378M», «avail»: «939M», «usedpercentage»: «29%», «mounted»: «/boot» }, { «fs»: «/dev/nvme0n1p1», «type»: «vfat», «size»: «511M», «used»: «30M», «avail»: «482M», «usedpercentage»: «6%», «mounted»: «/boot/efi» }]
ΠΡΠΈΠΌΠ΅Ρ ΡΠΎΡΠΌΠ°ΡΠ° CSV
JSON Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ CSV (Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ Π·Π°ΠΏΡΡΠΎΠΉ , Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅):
/dev/mapper/vgubuntu-root,ext4,915G,135G,734G,16%,//dev/nvme0n1p2,ext4,1.4G,378M,939M,29%,/boot/dev/nvme0n1p1,vfat,511M,30M,482M,6%,/boot/efi
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ JSON Π² CSV Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Linux / Unix
ΠΠ°ΠΊ ΠΆΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ Π²Π²ΠΎΠ΄? ΠΡΠ²Π΅Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΈΠ»ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ jq ΠΈΠ»ΠΈ dasel.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° jq
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ jq Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π², Ρ Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ.
ΠΠΎΡ ΠΊΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ jq Π½Π° Debian ΠΈΠ»ΠΈ Ubuntu Linux Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ apt command/apt-get:
sudo apt install jq
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ RHEL/Fedora/CentOS/Alma/Rocky Linux ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ dnf:
sudo dnf install jq
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Alpine Linux ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ apk:
sudo apk add jq
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ SUSE ΠΈΠ»ΠΈ OpenSUSE Linux ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ zypper:
sudo zypper in jq
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ macOS / OS X ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ homebrew, Π° Π·Π°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ brew:
brew install jq
ΠΡΠΈΠΌΠ΅Ρ β ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ JSON Π² CSV ΠΏΠΎΠ΄ Linux
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π΄Π»Ρ df.json:
cat df.json | jq
Π’Π΅ΠΏΠ΅ΡΡ ΠΈΠ·Π²Π»Π΅ΡΠ΅ΠΌ ΠΏΠΎΠ»Π΅ fs, Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ:
cat df.json | jq ‘.[] | .fs’
ΠΠ°ΠΊ Π½Π°ΡΡΠ΅Ρ ΠΏΠΎΠ»Π΅ΠΉ fs ΠΈ type?
cat df.json | jq ‘.[] | .fs, .type’
Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ CSV-ΡΠ°ΠΉΠ» Ρ Π·Π°ΠΏΡΡΠΎΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
cat df.json | jq ‘.[]| join(«,»)‘
join(β,β) ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π·Π°Π΄Π°Π½Π½ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ , Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ:
ΠΠ°ΠΊ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» JSON Π² CSV?
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°ΠΉΠ», ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π½ΡΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ bat/cat
«/dev/mapper/vgubuntu-root,ext4,915G,135G,734G,16%,/»»/dev/nvme0n1p2,ext4,1.4G,378M,939M,29%,/boot»»/dev/nvme0n1p1,vfat,511M,30M,482M,6%,/boot/efi»
ΠΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ -r raw, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ Π΄Π²ΠΎΠΉΠ½ΡΡ ΠΊΠ°Π²ΡΡΠ΅ΠΊ:
cat df.json | jq -r ‘.[]| join(«,»)‘
ΠΠ°ΠΊ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» JSON Π² CSV?
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°ΠΉΠ», ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π½ΡΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ bat/cat:
cat bingbot.json$ batcat bingbot.json
ΠΠ±ΡΠ°Π·Π΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ:
{ «creationTime»: «2021-11-10T10:00:00.121331», «prefixes»: [ {«ipv4Prefix»: «157.55.39.0/24»}, {«ipv4Prefix»: «207.46.13.0/24»}, {«ipv4Prefix»: «40.77.167.0/24»}, {«ipv4Prefix»: «13.66.139.0/24»}, {«ipv4Prefix»: «13.66.144.0/24»}, {«ipv4Prefix»: «52.167.144.0/24»}, {«ipv4Prefix»: «13.67.10.16/28»}, {«ipv4Prefix»: «13.69.66.240/28»}, {«ipv4Prefix»: «13.71.172.224/28»}, {«ipv4Prefix»: «139.217.52.0/28»}, {«ipv4Prefix»: «191.233.204.224/28»}, {«ipv4Prefix»: «20.36.108.32/28»}, {«ipv4Prefix»: «20.43.120.16/28»}, {«ipv4Prefix»: «40.79.131.208/28»}, {«ipv4Prefix»: «40.79.186.176/28»}, {«ipv4Prefix»: «52.231.148.0/28»}, {«ipv4Prefix»: «51.8.235.176/28»}, {«ipv4Prefix»: «51.105.67.0/28»} ]}
ΠΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠ΅Π»ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° .CSV ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π°: Π΄Π»Ρ WAF:
157.55.39.0/24,BingBot207.46.13.0/24,BingBot40.77.167.0/24,BingBot13.66.139.0/24,BingBot13.66.144.0/24,BingBot52.167.144.0/24,BingBot13.67.10.16/28,BingBot13.69.66.240/28,BingBot13.71.172.224/28,BingBot139.217.52.0/28,BingBot191.233.204.224/28,BingBot20.36.108.32/28,BingBot20.43.120.16/28,BingBot40.79.131.208/28,BingBot40.79.186.176/28,BingBot52.231.148.0/28,BingBot51.8.235.176/28,BingBot51.105.67.0/28,BingBot
ΠΠΎΠΌΠ°Π½Π΄Ρ
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠ² CIDR ΡΠ½Π°ΡΠ°Π»Π° Π²Π²Π΅Π΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
cat bingbot.json | jq ‘.prefixes[]’
ΠΠ°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ JSON Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ:
cat bingbot.json | jq -r ‘.prefixes[] | {cidr: .ipv4Prefix, comment: «BingBot»}’
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ join() Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° .CSV:
cat bingbot.json | jq -r ‘.prefixes[] | {cidr: .ipv4Prefix, comment:
«BingBot»} | join(«,»)’
Π‘ΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ Π΅Π³ΠΎ:
cat bingbot.json | jq -r ‘.prefixes[] | {cidr: .ipv4Prefix, comment: «BingBot»} | join(«,»)’ > bingbot.csv
ΠΡΠΎΠ²Π΅ΡΡΡΠ΅:
cat bingbot.csv
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΡ ΠΊΠ°ΠΊ Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π» ΡΠ°ΠΉΠ» CIDR Π² ΡΠΎΡΠΌΠ°Ρ .CSV.
ΠΠΎΡΠ»Π΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Ρ Π·Π°Π³ΡΡΠΆΠ°Ρ ΡΠ°ΠΉΠ» .CSV Π² WAF.
ΠΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΠΈ API Π΄Π»Ρ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ°, ΡΡΠΎΠ±Ρ WAF ΠΏΡΠΎΠΏΡΡΠΊΠ°Π» Π±ΠΎΡΠΎΠ² MS bing, Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΡΡ ΠΈΡ .
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» jq Π²ΠΌΠ΅ΡΡΠΎ dasel, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ jq, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ dasel.
Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΏΠΎ jq Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ man ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ help:
man jq