ตรวจสอบเอกสารประกอบแพ็คเกจ
jc
Python สำหรับนักพัฒนา
ลองใช้การสาธิตเว็บ
jc
และ REST API
jc
พร้อมใช้งานเป็นปลั๊กอินตัวกรอง Ansible ในคอลเล็กชันcommunity.general
ดูโพสต์บล็อกนี้เป็นตัวอย่าง
การแปลง JSON
jc
JSON แสดงผลเอาต์พุตของเครื่องมือ CLI ประเภทไฟล์ และสตริงทั่วไปเพื่อให้แยกวิเคราะห์สคริปต์ได้ง่ายขึ้น ดูส่วน Parsers สำหรับคำสั่ง ประเภทไฟล์ และสตริงที่รองรับ
dig example.com | jc --dig
[{ "id" : 38052 , "opcode" : " QUERY " , "status" : " NOERROR " , "flags" :[ " qr " , " rd " , " ra " ],
"query_num" : 1 , "answer_num" : 1 , "authority_num" : 0 , "additional_num" : 1 ,
"opt_pseudosection" :{ "edns" :{ "version" : 0 , "flags" :[], "udp" : 4096 }}, "question" :
{ "name" : " example.com. " , "class" : " IN " , "type" : " A " }, "answer" :[{ "name" :
" example.com. " , "class" : " IN " , "type" : " A " , "ttl" : 39049 , "data" : " 93.184.216.34 " }],
"query_time" : 49 , "server" : " 2600:1700:bab0:d40::1#53(2600:1700:bab0:d40::1) " ,
"when" : " Fri Apr 16 16:09:00 PDT 2021 " , "rcvd" : 56 , "when_epoch" : 1618614540 ,
"when_epoch_utc" : null }]
ซึ่งช่วยให้สามารถประมวลผลเอาต์พุตบรรทัดคำสั่งเพิ่มเติมด้วยเครื่องมือ เช่น jq
หรือ jello
โดยคำสั่ง piping:
$ dig example.com | jc --dig | jq -r ' .[].answer[].data '
93.184.216.34
หรือใช้ไวยากรณ์ทางเลือก "magic":
$ jc dig example.com | jq -r ' .[].answer[].data '
93.184.216.34
jc
ยังสามารถใช้เป็นไลบรารี่ของ python ได้ ในกรณีนี้ ค่าที่ส่งคืนจะเป็นพจนานุกรมหลาม รายการพจนานุกรม หรือแม้แต่พจนานุกรมซ้ำแบบขี้เกียจแทน JSON:
> >> import subprocess
> >> import jc
> >>
>> > cmd_output = subprocess . check_output ([ 'dig' , 'example.com' ], text = True )
> >> data = jc . parse ( 'dig' , cmd_output )
> >>
>> > data [ 0 ][ 'answer' ]
[{ 'name' : 'example.com.' , 'class' : 'IN' , 'type' : 'A' , 'ttl' : 29658 , 'data' :
'93.184.216.34' }]
สำหรับเอกสารประกอบแพ็คเกจ
jc
Python ให้ใช้help('jc')
,help('jc.lib')
หรือดูเอกสารประกอบออนไลน์
มีการแสดงข้อมูลสองรายการ การแสดงค่าเริ่มต้นใช้สคีมาที่เข้มงวดต่อตัวแยกวิเคราะห์ และแปลงตัวเลขที่ทราบเป็นค่า int/float JSON ค่าที่ทราบบางค่าของ None
จะถูกแปลงเป็น JSON null
ค่าบูลีนที่ทราบจะถูกแปลง และในบางกรณี จะมีการเพิ่มช่องบริบทเชิงความหมายเพิ่มเติม
หากต้องการเข้าถึง JSON แบบดิบที่ประมวลผลล่วงหน้า ให้ใช้ตัวเลือก -r
cli หรือพารามิเตอร์ฟังก์ชัน raw=True
ใน parse()
เมื่อใช้ jc
เป็นไลบรารี python
สคีมาสำหรับ parser แต่ละตัวสามารถดูได้ที่ลิงก์เอกสารข้าง Parser แต่ละตัวด้านล่าง
บันทึกประจำรุ่นสามารถพบได้ในส่วนการเผยแพร่บน Github
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับแรงจูงใจสำหรับโปรเจ็กต์นี้ โปรดดูบล็อกโพสต์ของฉันเกี่ยวกับการนำปรัชญา Unix มาสู่ศตวรรษที่ 21 และบทสัมภาษณ์ของฉันกับ Console
ดูเพิ่มเติมที่:
กรณีการใช้งาน:
มีหลายวิธีในการรับ jc
คุณสามารถติดตั้งผ่าน pip
ที่เก็บแพ็คเกจ OS หรือโดยการดาวน์โหลดไบนารีที่ถูกต้องสำหรับสถาปัตยกรรมของคุณและรันได้ทุกที่บนระบบไฟล์ของคุณ
pip3 install jc
ระบบปฏิบัติการ | สั่งการ |
---|---|
เดเบียน/อูบุนตู ลินุกซ์ | apt-get install jc |
เฟโดรา ลินุกซ์ | dnf install jc |
openSUSE ลินุกซ์ | zypper install jc |
อาร์คลินุกซ์ | pacman -S jc |
NixOS ลินุกซ์ | nix-env -iA nixpkgs.jc หรือ nix-env -iA nixos.jc |
ระบบลินุกซ์ Guix | guix install jc |
เจนทู ลินุกซ์ | emerge dev-python/jc |
โฟตอน ลินุกซ์ | tdnf install jc |
ระบบปฏิบัติการ macOS | brew install jc |
ฟรีBSD | portsnap fetch update && cd /usr/ports/textproc/py-jc && make install clean |
ปลั๊กอินตัวกรอง Ansible | ansible-galaxy collection install community.general |
ขั้วต่อ FortiSOAR | ติดตั้งจากตลาดตัวเชื่อมต่อ FortiSOAR |
สำหรับแพ็คเกจ OS เพิ่มเติม โปรดดู https://repology.org/project/jc/versions
สำหรับไบนารีที่คอมไพล์แล้ว โปรดดูการเผยแพร่บน Github
jc
ยอมรับอินพุตไพพ์จาก STDIN
และส่งออกการแทนค่า JSON ของเอาต์พุตของคำสั่งก่อนหน้าไปยัง STDOUT
COMMAND | jc [SLICE] [OPTIONS] PARSER
cat FILE | jc [SLICE] [OPTIONS] PARSER
echo STRING | jc [SLICE] [OPTIONS] PARSER
อีกทางหนึ่ง สามารถใช้ไวยากรณ์ "magic" ได้โดยเติม jc
ไว้ข้างหน้าคำสั่งที่จะแปลงหรืออยู่หน้าพาธสัมบูรณ์สำหรับไฟล์ Proc อ็อพชันสามารถส่งผ่านไปยัง jc
ได้ทันทีก่อนที่จะได้รับคำสั่งหรือพาธของไฟล์ Proc (หมายเหตุ: ไม่รองรับนามแฝงคำสั่งและเชลล์บิวด์อิน)
jc [SLICE] [OPTIONS] COMMAND
jc [SLICE] [OPTIONS] /proc/ < path-to-procfile >
เอาต์พุต JSON อาจมีขนาดกะทัดรัด (ค่าเริ่มต้น) หรือจัดรูปแบบสวยด้วยตัวเลือก -p
การโต้แย้ง | คำสั่งหรือประเภทไฟล์ | เอกสารประกอบ |
---|---|---|
--acpi | ตัวแยกวิเคราะห์คำสั่ง acpi | รายละเอียด |
--airport | airport -I สั่ง parser | รายละเอียด |
--airport-s | ตัวแยกวิเคราะห์คำสั่ง airport -s | รายละเอียด |
--apt-cache-show | ตัวแยกวิเคราะห์คำสั่ง apt-cache show | รายละเอียด |
--apt-get-sqq | ตัวแยกวิเคราะห์คำสั่ง apt-get -sqq | รายละเอียด |
--arp | ตัวแยกวิเคราะห์คำสั่ง arp | รายละเอียด |
--asciitable | ตัวแยกวิเคราะห์ตาราง ASCII และ Unicode | รายละเอียด |
--asciitable-m | ตัวแยกวิเคราะห์ตาราง ASCII และ Unicode หลายบรรทัด | รายละเอียด |
--blkid | ตัวแยกวิเคราะห์คำสั่ง blkid | รายละเอียด |
--bluetoothctl | ตัวแยกวิเคราะห์คำสั่ง bluetoothctl | รายละเอียด |
--cbt | ตัวแยกวิเคราะห์คำสั่ง cbt (Google Bigtable) | รายละเอียด |
--cef | ตัวแยกวิเคราะห์สตริง CEF | รายละเอียด |
--cef-s | ตัวแยกวิเคราะห์การสตรีมสตริง CEF | รายละเอียด |
--certbot | ตัวแยกวิเคราะห์คำสั่ง certbot | รายละเอียด |
--chage | chage --list ตัวแยกวิเคราะห์คำสั่ง | รายละเอียด |
--cksum | ตัวแยกวิเคราะห์คำสั่ง cksum และ sum | รายละเอียด |
--clf | ตัวแยกวิเคราะห์ไฟล์รูปแบบบันทึกทั่วไปและแบบรวม | รายละเอียด |
--clf-s | ตัวแยกวิเคราะห์การสตรีมไฟล์รูปแบบบันทึกทั่วไปและแบบรวม | รายละเอียด |
--crontab | คำสั่ง crontab และตัวแยกวิเคราะห์ไฟล์ | รายละเอียด |
--crontab-u | ตัวแยกวิเคราะห์ไฟล์ crontab พร้อมการสนับสนุนผู้ใช้ | รายละเอียด |
--csv | ตัวแยกวิเคราะห์ไฟล์ CSV | รายละเอียด |
--csv-s | ตัวแยกวิเคราะห์การสตรีมไฟล์ CSV | รายละเอียด |
--curl-head | ตัวแยกวิเคราะห์คำสั่ง curl --head | รายละเอียด |
--date | ตัวแยกวิเคราะห์คำสั่ง date | รายละเอียด |
--datetime-iso | ตัวแยกวิเคราะห์สตริงวันที่และเวลา ISO 8601 | รายละเอียด |
--debconf-show | ตัวแยกวิเคราะห์คำสั่ง debconf-show | รายละเอียด |
--df | ตัวแยกวิเคราะห์คำสั่ง df | รายละเอียด |
--dig | ตัวแยกวิเคราะห์คำสั่ง dig | รายละเอียด |
--dir | ตัวแยกวิเคราะห์คำสั่ง dir | รายละเอียด |
--dmidecode | ตัวแยกวิเคราะห์คำสั่ง dmidecode | รายละเอียด |
--dpkg-l | ตัวแยกวิเคราะห์คำสั่ง dpkg -l | รายละเอียด |
--du | du คำสั่ง parser | รายละเอียด |
--efibootmgr | ตัวแยกวิเคราะห์คำสั่ง efibootmgr | รายละเอียด |
--email-address | ตัวแยกวิเคราะห์สตริงที่อยู่อีเมล | รายละเอียด |
--env | ตัวแยกวิเคราะห์คำสั่ง env | รายละเอียด |
--ethtool | ตัวแยกวิเคราะห์คำสั่ง ethtool | รายละเอียด |
--file | ตัวแยกวิเคราะห์คำสั่ง file | รายละเอียด |
--find | find ตัวแยกวิเคราะห์คำสั่ง | รายละเอียด |
--findmnt | ตัวแยกวิเคราะห์คำสั่ง findmnt | รายละเอียด |
--finger | ตัวแยกวิเคราะห์คำสั่ง finger | รายละเอียด |
--free | ตัวแยกวิเคราะห์คำสั่ง free | รายละเอียด |
--fstab | /etc/fstab ตัวแยกวิเคราะห์ไฟล์ | รายละเอียด |
--git-log | ตัวแยกวิเคราะห์คำสั่ง git log | รายละเอียด |
--git-log-s | ตัวแยกวิเคราะห์การสตรีมคำสั่ง git log | รายละเอียด |
--git-ls-remote | ตัวแยกวิเคราะห์คำสั่ง git ls-remote | รายละเอียด |
--gpg | ตัวแยกวิเคราะห์คำสั่ง gpg --with-colons | รายละเอียด |
--group | /etc/group ตัวแยกวิเคราะห์ไฟล์ | รายละเอียด |
--gshadow | /etc/gshadow ตัวแยกวิเคราะห์ไฟล์ | รายละเอียด |
--hash | ตัวแยกวิเคราะห์คำสั่ง hash | รายละเอียด |
--hashsum | ตัวแยกวิเคราะห์คำสั่ง hashsum ( md5sum , shasum ฯลฯ ) | รายละเอียด |
--hciconfig | ตัวแยกวิเคราะห์คำสั่ง hciconfig | รายละเอียด |
--history | ตัวแยกวิเคราะห์คำสั่ง history | รายละเอียด |
--host | ตัวแยกวิเคราะห์คำสั่ง host | รายละเอียด |
--hosts | /etc/hosts ตัวแยกวิเคราะห์ไฟล์ | รายละเอียด |
--http-headers | ตัวแยกวิเคราะห์ส่วนหัว HTTP | รายละเอียด |
--id | ตัวแยกวิเคราะห์คำสั่ง id | รายละเอียด |
--ifconfig | ตัวแยกวิเคราะห์คำสั่ง ifconfig | รายละเอียด |
--ini | ตัวแยกวิเคราะห์ไฟล์ INI | รายละเอียด |
--ini-dup | INI พร้อมตัวแยกวิเคราะห์ไฟล์คีย์ที่ซ้ำกัน | รายละเอียด |
--iostat | ตัวแยกวิเคราะห์คำสั่ง iostat | รายละเอียด |
--iostat-s | ตัวแยกวิเคราะห์การสตรีมคำสั่ง iostat | รายละเอียด |
--ip-address | ตัวแยกวิเคราะห์สตริงที่อยู่ IPv4 และ IPv6 | รายละเอียด |
--ipconfig | ตัวแยกวิเคราะห์คำสั่ง ipconfig Windows | รายละเอียด |
--iptables | ตัวแยกวิเคราะห์คำสั่ง iptables | รายละเอียด |
--ip-route | ตัวแยกวิเคราะห์คำสั่ง ip route | รายละเอียด |
--iw-scan | iw dev [device] scan | รายละเอียด |
--iwconfig | ตัวแยกวิเคราะห์คำสั่ง iwconfig | รายละเอียด |
--jar-manifest | ตัวแยกวิเคราะห์ไฟล์ Java MANIFEST.MF | รายละเอียด |
--jobs | ตัวแยกวิเคราะห์คำสั่ง jobs | รายละเอียด |
--jwt | ตัวแยกวิเคราะห์สตริง JWT | รายละเอียด |
--kv | ไฟล์คีย์/ค่าและตัวแยกวิเคราะห์สตริง | รายละเอียด |
--kv-dup | คีย์/ค่าที่มีไฟล์คีย์ซ้ำและตัวแยกวิเคราะห์สตริง | รายละเอียด |
--last | ตัวแยกวิเคราะห์คำสั่ง last และ lastb | รายละเอียด |
--ls | ตัวแยกวิเคราะห์คำสั่ง ls | รายละเอียด |
--ls-s | ตัวแยกวิเคราะห์การสตรีมคำสั่ง ls | รายละเอียด |
--lsattr | ตัวแยกวิเคราะห์คำสั่ง lsattr | รายละเอียด |
--lsb-release | ตัวแยกวิเคราะห์คำสั่ง lsb_release | รายละเอียด |
--lsblk | ตัวแยกวิเคราะห์คำสั่ง lsblk | รายละเอียด |
--lsmod | ตัวแยกวิเคราะห์คำสั่ง lsmod | รายละเอียด |
--lsof | ตัวแยกวิเคราะห์คำสั่ง lsof | รายละเอียด |
--lspci | ตัวแยกวิเคราะห์คำสั่ง lspci -mmv | รายละเอียด |
--lsusb | ตัวแยกวิเคราะห์คำสั่ง lsusb | รายละเอียด |
--m3u | ตัวแยกวิเคราะห์ไฟล์ M3U และ M3U8 | รายละเอียด |
--mdadm | ตัวแยกวิเคราะห์คำสั่ง mdadm | รายละเอียด |
--mount | ตัวแยกวิเคราะห์คำสั่งเมาน mount | รายละเอียด |
--mpstat | ตัวแยกวิเคราะห์คำสั่ง mpstat | รายละเอียด |
--mpstat-s | ตัวแยกวิเคราะห์การสตรีมคำสั่ง mpstat | รายละเอียด |
--needrestart | needrestart -b ตัวแยกวิเคราะห์คำสั่ง | รายละเอียด |
--netstat | ตัวแยกวิเคราะห์คำสั่ง netstat | รายละเอียด |
--nmcli | ตัวแยกวิเคราะห์คำสั่ง nmcli | รายละเอียด |
--nsd-control | ตัวแยกวิเคราะห์คำสั่ง nsd-control | รายละเอียด |
--ntpq | ตัวแยกวิเคราะห์คำสั่ง ntpq -p | รายละเอียด |
--openvpn | ตัวแยกวิเคราะห์ไฟล์ openvpn-status.log | รายละเอียด |
--os-prober | ตัวแยกวิเคราะห์คำสั่ง os-prober | รายละเอียด |
--os-release | /etc/os-release ตัวแยกวิเคราะห์ไฟล์ | รายละเอียด |
--pacman | ตัวแยกวิเคราะห์คำสั่ง pacman | รายละเอียด |
--passwd | /etc/passwd ตัวแยกวิเคราะห์ไฟล์ | รายละเอียด |
--path | ตัวแยกวิเคราะห์สตริงเส้นทาง POSIX | รายละเอียด |
--path-list | ตัวแยกวิเคราะห์สตริงรายการเส้นทาง POSIX | รายละเอียด |
--pci-ids | ตัวแยกวิเคราะห์ไฟล์ pci.ids | รายละเอียด |
--pgpass | ตัวแยกวิเคราะห์ไฟล์รหัสผ่าน PostgreSQL | รายละเอียด |
--pidstat | ตัวแยกวิเคราะห์คำสั่ง pidstat -H | รายละเอียด |
--pidstat-s | pidstat -H คำสั่งสตรีมมิ่ง parser | รายละเอียด |
--ping | ตัวแยกวิเคราะห์คำสั่ง ping และ ping6 | รายละเอียด |
--ping-s | ตัวแยกวิเคราะห์การสตรีมคำสั่ง ping และ ping6 | รายละเอียด |
--pip-list | ตัวแยกวิเคราะห์คำสั่งรายการ pip list | รายละเอียด |
--pip-show | ตัวแยกวิเคราะห์คำสั่ง pip show | รายละเอียด |
--pkg-index-apk | ตัวแยกวิเคราะห์ไฟล์ดัชนีแพ็คเกจ Alpine Linux | รายละเอียด |
--pkg-index-deb | ตัวแยกวิเคราะห์ไฟล์ดัชนีแพ็คเกจ Debian | รายละเอียด |
--plist | โปรแกรมแยกวิเคราะห์ไฟล์ PLIST | รายละเอียด |
--postconf | ตัวแยกวิเคราะห์คำสั่ง postconf -M | รายละเอียด |
--proc | /proc/ ตัวแยกวิเคราะห์ไฟล์ | รายละเอียด |
--ps | ตัวแยกวิเคราะห์คำสั่ง ps | รายละเอียด |
--resolve-conf | /etc/resolve.conf ตัวแยกวิเคราะห์ไฟล์ | รายละเอียด |
--route | ตัวแยกวิเคราะห์คำสั่ง route | รายละเอียด |
--rpm-qi | ตัวแยกวิเคราะห์คำสั่ง rpm -qi | รายละเอียด |
--rsync | ตัวแยกวิเคราะห์คำสั่ง rsync | รายละเอียด |
--rsync-s | ตัวแยกวิเคราะห์การสตรีมคำสั่ง rsync | รายละเอียด |
--semver | ตัวแยกวิเคราะห์สตริงเวอร์ชันความหมาย | รายละเอียด |
--sfdisk | ตัวแยกวิเคราะห์คำสั่ง sfdisk | รายละเอียด |
--shadow | /etc/shadow ตัวแยกวิเคราะห์ไฟล์ | รายละเอียด |
--srt | ตัวแยกวิเคราะห์ไฟล์ SRT | รายละเอียด |
--ss | ตัวแยกวิเคราะห์คำสั่ง ss | รายละเอียด |
--ssh-conf | ไฟล์กำหนดค่า ssh และตัวแยกวิเคราะห์คำสั่ง ssh -G | รายละเอียด |
--sshd-conf | ไฟล์กำหนด sshd และตัวแยกวิเคราะห์คำสั่ง sshd -T | รายละเอียด |
--stat | ตัวแยกวิเคราะห์คำสั่ง stat | รายละเอียด |
--stat-s | ตัวแยกวิเคราะห์การสตรีมคำสั่ง stat | รายละเอียด |
--swapon | ตัวแยกวิเคราะห์คำสั่ง swapon | รายละเอียด |
--sysctl | ตัวแยกวิเคราะห์คำสั่ง sysctl | รายละเอียด |
--syslog | ตัวแยกวิเคราะห์สตริง Syslog RFC 5424 | รายละเอียด |
--syslog-s | ตัวแยกวิเคราะห์การสตรีมสตริง Syslog RFC 5424 | รายละเอียด |
--syslog-bsd | ตัวแยกวิเคราะห์สตริง Syslog RFC 3164 | รายละเอียด |
--syslog-bsd-s | ตัวแยกวิเคราะห์การสตรีมสตริง Syslog RFC 3164 | รายละเอียด |
--systemctl | ตัวแยกวิเคราะห์คำสั่ง systemctl | รายละเอียด |
--systemctl-lj | ตัวแยกวิเคราะห์คำสั่ง systemctl list-jobs | รายละเอียด |
--systemctl-ls | ตัวแยกวิเคราะห์คำสั่ง systemctl list-sockets | รายละเอียด |
--systemctl-luf | ตัวแยกวิเคราะห์คำสั่ง systemctl list-unit-files | รายละเอียด |
--systeminfo | ตัวแยกวิเคราะห์คำสั่ง systeminfo | รายละเอียด |
--time | ตัวแยกวิเคราะห์คำสั่ง /usr/bin/time | รายละเอียด |
--timedatectl | ตัวแยกวิเคราะห์คำสั่ง timedatectl status | รายละเอียด |
--timestamp | ตัวแยกวิเคราะห์สตริง Unix Epoch Timestamp | รายละเอียด |
--toml | ตัวแยกวิเคราะห์ไฟล์ TOML | รายละเอียด |
--top | ตัวแยกวิเคราะห์คำสั่ง top -b | รายละเอียด |
--top-s | ตัวแยกวิเคราะห์การสตรีมคำสั่ง top -b | รายละเอียด |
--tracepath | ตัวแยกวิเคราะห์คำสั่ง tracepath และ tracepath6 | รายละเอียด |
--traceroute | ตัวแยกวิเคราะห์คำสั่ง traceroute และ traceroute6 | รายละเอียด |
--tune2fs | ตัวแยกวิเคราะห์คำสั่ง tune2fs -l | รายละเอียด |
--udevadm | ตัวแยกวิเคราะห์คำสั่ง udevadm info | รายละเอียด |
--ufw | ตัวแยกวิเคราะห์คำสั่ง ufw status | รายละเอียด |
--ufw-appinfo | ufw app info [application] | รายละเอียด |
--uname | uname -a ตัวแยกวิเคราะห์คำสั่ง | รายละเอียด |
--update-alt-gs | update-alternatives --get-selections คำสั่งแยกวิเคราะห์ | รายละเอียด |
--update-alt-q | update-alternatives --query คำสั่ง parser | รายละเอียด |
--upower | ตัวแยกวิเคราะห์คำสั่ง upower | รายละเอียด |
--uptime | ตัวแยกวิเคราะห์คำสั่ง uptime | รายละเอียด |
--url | ตัวแยกวิเคราะห์สตริง URL | รายละเอียด |
--ver | ตัวแยกวิเคราะห์สตริงเวอร์ชัน | รายละเอียด |
--veracrypt | ตัวแยกวิเคราะห์คำสั่ง veracrypt | รายละเอียด |
--vmstat | ตัวแยกวิเคราะห์คำสั่ง vmstat | รายละเอียด |
--vmstat-s | ตัวแยกวิเคราะห์การสตรีมคำสั่ง vmstat | รายละเอียด |
--w | ตัวแยกวิเคราะห์คำสั่ง w | รายละเอียด |
--wc | ตัวแยกวิเคราะห์คำสั่ง wc | รายละเอียด |
--wg-show | wg show ตัวแยกวิเคราะห์คำสั่ง | รายละเอียด |
--who | who บัญชาผู้แยกวิเคราะห์ | รายละเอียด |
--x509-cert | ตัวแยกวิเคราะห์ไฟล์ใบรับรอง X.509 PEM และ DER | รายละเอียด |
--x509-csr | ตัวแยกวิเคราะห์ไฟล์คำขอใบรับรอง X.509 PEM และ DER | รายละเอียด |
--xml | ตัวแยกวิเคราะห์ไฟล์ XML | รายละเอียด |
--xrandr | ตัวแยกวิเคราะห์คำสั่ง xrandr | รายละเอียด |
--yaml | ตัวแยกวิเคราะห์ไฟล์ YAML | รายละเอียด |
--zipinfo | ตัวแยกวิเคราะห์คำสั่ง zipinfo | รายละเอียด |
--zpool-iostat | ตัวแยกวิเคราะห์คำสั่ง zpool iostat | รายละเอียด |
--zpool-status | ตัวแยกวิเคราะห์คำสั่ง zpool status | รายละเอียด |
สั้น | ยาว | คำอธิบาย |
---|---|---|
-a | --about | เกี่ยวกับ jc พิมพ์ข้อมูลเกี่ยวกับ jc และ parsers (ใน JSON หรือ YAML แน่นอน!) |
-C | --force-color | บังคับให้เอาต์พุตสีแม้ในขณะที่ใช้ไปป์ (แทนที่ -m และตัวแปร env NO_COLOR ) |
-d | --debug | โหมดแก้ไขข้อบกพร่อง พิมพ์ข้อความติดตามหากพบปัญหาการแยกวิเคราะห์ (ใช้ -dd สำหรับการดีบักแบบละเอียด) |
-h | --help | ช่วย. ใช้ jc -h --parser_name สำหรับเอกสารประกอบของ parser ใช้สองครั้งเพื่อแสดงพาร์เซอร์ที่ซ่อนอยู่ (เช่น -hh ) ใช้thriceเพื่อแสดงหมวดหมู่ parser (เช่น -hhh ) |
-m | --monochrome | เอาต์พุตขาวดำ |
-M | --meta-out | เพิ่มข้อมูลเมตาลงในเอาต์พุต รวมถึงการประทับเวลา ชื่อตัวแยกวิเคราะห์ คำสั่งเวทย์มนตร์ รหัสทางออกของคำสั่งเวทย์มนตร์ ฯลฯ |
-p | --pretty | จัดรูปแบบเอาต์พุต JSON อย่างสวยงาม |
-q | --quiet | โหมดเงียบ ไม่แสดงข้อความเตือนตัวแยกวิเคราะห์ (ใช้ -qq เพื่อละเว้นข้อผิดพลาดของตัวแยกวิเคราะห์การสตรีม) |
-r | --raw | ผลผลิตดิบ ให้เอาต์พุตตามตัวอักษรมากขึ้น โดยทั่วไปจะมีค่าสตริงและไม่มีการประมวลผลความหมายเพิ่มเติม |
-s | --slurp | แทรกหลายบรรทัดลงในอาร์เรย์ (ใช้ -hhh เพื่อค้นหา parsers ที่เข้ากันได้) |
-u | --unbuffer | เอาท์พุทบัฟเฟอร์ |
-v | --version | ข้อมูลเวอร์ชัน |
-y | --yaml-out | เอาต์พุต YAML |
-B | --bash-comp | สร้างสคริปต์การเติมเชลล์ Bash ให้สมบูรณ์ (ข้อมูลเพิ่มเติม) |
-Z | --zsh-comp | สร้างสคริปต์การเติมเชลล์ Zsh (ข้อมูลเพิ่มเติม) |
การแบ่งส่วนบรรทัดได้รับการสนับสนุนโดยใช้ไวยากรณ์ START:STOP
ซึ่งคล้ายกับการแบ่งส่วน Python สิ่งนี้ทำให้คุณสามารถข้ามบรรทัดที่จุดเริ่มต้นและ/หรือจุดสิ้นสุดของอินพุต STDIN
ที่คุณต้องการให้ jc
แปลง
START
และ STOP
อาจเป็นจำนวนเต็มบวกหรือลบหรือเว้นว่างก็ได้ และอนุญาตให้คุณระบุจำนวนบรรทัดที่จะข้ามและจำนวนบรรทัดที่จะประมวลผล สไลซ์ค่าบวกและค่าว่างมีประสิทธิภาพหน่วยความจำมากที่สุด จำนวนเต็มลบใดๆ ในส่วนนั้นจะใช้หน่วยความจำมากขึ้น
ตัวอย่างเช่น หากต้องการข้ามบรรทัดแรกและบรรทัดสุดท้ายของข้อความต่อไปนี้ คุณสามารถแสดงการแบ่งส่วนได้หลายวิธี:
$ cat table.txt
# ## We want to skip this header ###
col1 col2
foo 1
bar 2
# ## We want to skip this footer ###
$ cat table.txt | jc 1:-1 --asciitable
[{ " col1 " : " foo " , " col2 " : " 1 " },{ " col1 " : " bar " , " col2 " : " 2 " }]
$ cat table.txt | jc 1:4 --asciitable
[{ " col1 " : " foo " , " col2 " : " 1 " },{ " col1 " : " bar " , " col2 " : " 2 " }]
ในตัวอย่างนี้การแบ่งส่วนบรรทัด 1:-1
และ 1:4
ให้เอาต์พุตเดียวกัน
เมื่อใช้จำนวนเต็มบวก ตำแหน่งดัชนีของ STOP
จะไม่รวมอยู่ด้วย ชิ้นที่เป็นบวกนับจากบรรทัดแรกของอินพุตไปจนถึงจุดสิ้นสุดโดยเริ่มจาก 0
เป็นบรรทัดแรก ชิ้นค่าลบนับจากบรรทัดสุดท้ายไปยังจุดเริ่มต้นโดยเริ่มต้นที่ -1
เป็นบรรทัดสุดท้าย นี่เป็นวิธีการทำงานของคุณสมบัติการแบ่งส่วนของ Python
นี่คือรายละเอียดของตัวเลือกการแบ่งเส้น:
สัญกรณ์ชิ้น | ประมวลผลบรรทัดอินพุตแล้ว |
---|---|
START:STOP | เส้น START ถึง STOP - 1 |
START: | บรรทัด START ผ่านส่วนที่เหลือของเอาต์พุต |
:STOP | เส้นตั้งแต่ต้นทางถึง STOP - 1 |
-START:STOP | START บรรทัดจากจุดสิ้นสุดถึง STOP - 1 |
START:-STOP | เส้น START ถึงเส้น STOP จากจุดสิ้นสุด |
-START:-STOP | เส้น START จากจุดสิ้นสุดถึงเส้น STOP จากจุดสิ้นสุด |
-START: | START บรรทัดจากจุดสิ้นสุดไปจนถึงส่วนที่เหลือของเอาต์พุต |
:-STOP | เส้นจากจุดเริ่มต้นถึงเส้น STOP จากจุดสิ้นสุด |
: | ทุกบรรทัด |
parsers บางตัวรองรับอินพุตหลายรายการและสามารถส่งออกอาร์เรย์ของผลลัพธ์ในการส่งผ่านครั้งเดียว Slurping ใช้ได้กับตัวแยกสตริงที่ยอมรับอินพุตบรรทัดเดียว (เช่น url
และ ip-address
) หากต้องการดูรายการ parsers ที่รองรับตัวเลือก --slurp
ให้ใช้ jc -hhh
ตัวอย่างเช่น คุณสามารถส่งไฟล์ที่มีที่อยู่ IP หลายรายการ (หนึ่งรายการต่อบรรทัด) ไปยัง jc
ด้วยตัวเลือก --slurp
และอาร์เรย์ของผลลัพธ์จะแสดงออกมา:
$ cat ip-addresses.txt | jc --slurp --ip-address
[ < multiple output objects > ]
ไวยากรณ์วิเศษสำหรับไฟล์ /proc
รองรับการแยกไฟล์หลายไฟล์โดยอัตโนมัติ (ไม่จำเป็นต้องใช้ตัวเลือก --slurp
) ตัวอย่างเช่น คุณสามารถแปลงไฟล์ PID จำนวนมากพร้อมกันได้:
$ jc /proc/ * /status
[ < multiple output objects > ]
เมื่อใช้ไวยากรณ์วิเศษ /proc
และเลือกหลายไฟล์ ฟิลด์ _file
เพิ่มเติมจะถูกแทรกในเอาต์พุต เพื่อให้ง่ายต่อการบอกว่าแต่ละออบเจ็กต์เอาต์พุตอ้างอิงถึงไฟล์ใด
ในที่สุดตัวเลือก --meta-out
สามารถใช้ร่วมกับเอาต์พุตที่เบลอได้ ในกรณีนี้ เอาท์พุตที่กระจายจะถูกห่อไว้ในวัตถุที่มีโครงสร้างดังต่อไปนี้:
{
"result" : [ ],
"_jc_meta" : {
"parser" : " url " ,
"timestamp" : 1706235558.654576 ,
"slice_start" : null ,
"slice_end" : null ,
"input_list" : [
" http://www.google.com " ,
" https://www.apple.com " ,
" https://www.microsoft.com "
]
}
}
ด้วย --meta-out
input_list
จะมีรายการอินพุต (สตริงอินพุตจริงหรือชื่อไฟล์ /proc
) เพื่อให้คุณสามารถระบุได้ว่าออบเจ็กต์เอาต์พุตใดเกี่ยวข้องกับแต่ละสตริงอินพุตหรือชื่อไฟล์ /proc
ข้อผิดพลาดร้ายแรงใดๆ ภายใน jc
จะสร้างโค้ดทางออกเป็น 100
มิฉะนั้นโค้ดทางออกจะเป็น 0
เมื่อใช้ไวยากรณ์ "magic" (เช่น jc ifconfig eth0
) jc
จะเก็บโค้ดทางออกของโปรแกรมที่กำลังแยกวิเคราะห์และเพิ่มลงในโค้ดทางออก jc
วิธีนี้ทำให้ง่ายต่อการพิจารณาว่ามีข้อผิดพลาดมาจากโปรแกรมแยกวิเคราะห์หรือ jc
พิจารณาตัวอย่างต่อไปนี้โดยใช้ ifconfig
:
รหัสออก ifconfig | รหัสทางออก jc | รหัสทางออกรวม | การตีความ |
---|---|---|---|
0 | 0 | 0 | ไม่มีข้อผิดพลาด |
1 | 0 | 1 | เกิดข้อผิดพลาดใน ifconfig |
0 | 100 | 100 | เกิดข้อผิดพลาดใน jc |
1 | 100 | 101 | เกิดข้อผิดพลาดทั้ง ifconfig และ jc |
เมื่อใช้ไวยากรณ์ "magic" คุณยังสามารถดึงรหัสทางออกของโปรแกรมที่เรียกได้โดยใช้ตัวเลือก --meta-out
หรือ -M
สิ่งนี้จะเพิ่มออบเจ็กต์ _jc_meta
ต่อท้ายเอาต์พุตซึ่งจะรวมข้อมูลคำสั่งเวทย์มนตร์ รวมถึงโค้ดทางออก
นี่คือตัวอย่างด้วย ping
:
$ jc --meta-out -p ping -c2 192.168.1.252
{
" destination_ip " : " 192.168.1.252 " ,
" data_bytes " : 56,
" pattern " : null,
" destination " : " 192.168.1.252 " ,
" packets_transmitted " : 2,
" packets_received " : 0,
" packet_loss_percent " : 100.0,
" duplicates " : 0,
" responses " : [
{
" type " : " timeout " ,
" icmp_seq " : 0,
" duplicate " : false
}
],
" _jc_meta " : {
" parser " : " ping " ,
" timestamp " : 1661357115.27949,
" magic_command " : [
" ping " ,
" -c2 " ,
" 192.168.1.252 "
],
" magic_command_exit " : 2
}
}
$ echo $?
2
คุณสามารถระบุสีที่กำหนดเองได้ผ่านตัวแปรสภาพแวดล้อม JC_COLORS
ตัวแปรสภาพแวดล้อม JC_COLORS
รับค่าสตริงที่คั่นด้วยเครื่องหมายจุลภาคสี่ค่าในรูปแบบต่อไปนี้:
JC_COLORS= < keyname_color > , < keyword_color > , < number_color > , < string_color >
โดยที่สีคือ: black
, red
, green
, yellow
, blue
, magenta
, cyan
, gray
, ดำ brightblack
, brightred
, เขียว brightgreen
, เหลืองสดใส , brightyellow
, brightmagenta
brightblue
, ฟ้า brightcyan
, white
หรือ default
ตัวอย่างเช่น หากต้องการตั้งค่าเป็นสีเริ่มต้น:
JC_COLORS=blue,brightblack,magenta,green
หรือ
JC_COLORS=default,default,default,default
คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อม NO_COLOR
เป็นค่าใดก็ได้เพื่อปิดใช้งานเอาต์พุตสีใน jc
โปรดทราบว่าการใช้ตัวเลือก -C
เพื่อบังคับให้เอาต์พุตสีจะแทนที่ทั้งตัวแปรสภาพแวดล้อม NO_COLOR
และตัวเลือก -m
โปรแกรมแยกวิเคราะห์ส่วนใหญ่จะโหลดข้อมูลทั้งหมดจาก STDIN
แยกวิเคราะห์ จากนั้นส่งออกเอกสาร JSON ทั้งหมดตามลำดับ มีตัวแยกวิเคราะห์การสตรีมบางตัว (เช่น ls-s
และ ping-s
) ที่เริ่มประมวลผลและส่งออกข้อมูลทีละบรรทัดทันทีเป็น JSON Lines (aka NDJSON) ในขณะที่ได้รับจาก STDIN
สิ่งนี้สามารถลดจำนวนหน่วยความจำที่จำเป็นในการแยกวิเคราะห์เอาต์พุตคำสั่งจำนวนมากได้อย่างมาก (เช่น ls -lR /
) และบางครั้งสามารถประมวลผลข้อมูลได้รวดเร็วยิ่งขึ้น ตัวแยกวิเคราะห์การสตรีมมีพฤติกรรมที่แตกต่างจากตัวแยกวิเคราะห์มาตรฐานเล็กน้อยดังที่อธิบายไว้ด้านล่าง
หมายเหตุ: ตัวแยกวิเคราะห์การสตรีมไม่สามารถใช้กับไวยากรณ์ "magic" ได้
คุณอาจต้องการละเว้นข้อผิดพลาดในการแยกวิเคราะห์เมื่อใช้ตัวแยกวิเคราะห์การสตรีม เนื่องจากสิ่งเหล่านี้อาจใช้ในไปป์ไลน์การประมวลผลที่มีอายุการใช้งานยาวนาน และข้อผิดพลาดอาจทำให้ไปป์เสียหายได้ หากต้องการละเว้นข้อผิดพลาดในการแยกวิเคราะห์ ให้ใช้ตัวเลือก -qq
cli หรืออาร์กิวเมนต์ ignore_exceptions=True
พร้อมด้วยฟังก์ชัน parse()
สิ่งนี้จะเพิ่มออบเจ็กต์ _jc_meta
ไปยังเอาต์พุต JSON พร้อมด้วยแอตทริบิวต์ success
หาก success
เป็น true
แสดงว่าไม่มีปัญหาในการแยกวิเคราะห์บรรทัด หาก success
เป็น false
แสดงว่าพบปัญหาการแยกวิเคราะห์และช่อง error
และ line
จะถูกเพิ่มเพื่อรวมคำอธิบายข้อผิดพลาดแบบสั้นและเนื้อหาของบรรทัดที่ไม่สามารถแยกวิเคราะห์ได้ ตามลำดับ:
แยกวิเคราะห์บรรทัดสำเร็จด้วยตัวเลือก -qq
:
{
"command_data" : " data " ,
"_jc_meta" : {
"success" : true
}
}
แยกวิเคราะห์บรรทัดด้วยตัวเลือก -qq
ไม่สำเร็จ:
{
"_jc_meta" : {
"success" : false ,
"error" : " error message " ,
"line" : " original line data "
}
}
ระบบปฏิบัติการส่วนใหญ่จะบัฟเฟอร์เอาต์พุตที่ถูกไพพ์จากกระบวนการหนึ่งไปอีกกระบวนการหนึ่ง โดยปกติบัฟเฟอร์จะอยู่ที่ประมาณ 4KB เมื่อดูเอาต์พุตในเทอร์มินัล บัฟเฟอร์ OS จะไม่ทำงาน ดังนั้นเอาต์พุตจึงแสดงบนหน้าจอทันที เมื่อรวมหลายกระบวนการเข้าด้วยกัน อาจดูเหมือนว่าเอาต์พุตหยุดทำงานเมื่อข้อมูลอินพุตช้ามาก (เช่น ping
):
$ ping 1.1.1.1 | jc --ping-s | jq
เนื่องจากระบบปฏิบัติการมีส่วนร่วมกับบัฟเฟอร์ 4KB ระหว่าง jc
และ jq
ในตัวอย่างนี้ หากต้องการแสดงข้อมูลบนเทอร์มินัลแบบเรียลไทม์ คุณสามารถปิดการใช้งานบัฟเฟอร์ด้วยตัวเลือก -u
(unbuffer) cli:
$ ping 1.1.1.1 | jc --ping-s -u | jq
{"type":"reply","pattern":null,"timestamp":null,"bytes":"64","respons...}
{"type":"reply","pattern":null,"timestamp":null,"bytes":"64","respons...}
...
หมายเหตุ: เอาต์พุตที่ไม่มีบัฟเฟอร์อาจช้าลงสำหรับสตรีมข้อมูลขนาดใหญ่
ตัวแยกวิเคราะห์แบบสตรีมมิ่งยอมรับออบเจ็กต์ที่สามารถทำซ้ำได้และส่งคืนออบเจ็กต์ที่สามารถทำซ้ำได้เพื่อให้สามารถประมวลผลข้อมูลแบบขี้เกียจได้ ข้อมูลอินพุตควรวนซ้ำในบรรทัดของข้อมูลสตริง ตัวอย่างของข้อมูลอินพุตที่ดีคือ sys.stdin
หรือ str.splitlines()
หากต้องการใช้อ็อบเจ็กต์ที่ส่งคืนได้ในโค้ดของคุณ เพียงวนซ้ำหรือใช้ฟังก์ชัน next() บิวด์อิน:
import jc
result = jc . parse ( 'ls_s' , ls_command_output . splitlines ())
for item in result :
print ( item [ "filename" ])
ปลั๊กอิน Parser อาจถูกวางไว้ในโฟลเดอร์ jc/jcparsers
ใน "ไดเรกทอรีข้อมูลแอป" ในเครื่องของคุณ:
$HOME/.local/share/jc/jcparsers
$HOME/Library/Application Support/jc/jcparsers
$LOCALAPPDATAjcjcjcparsers
ปลั๊กอิน Parser เป็นไฟล์โมดูลหลามมาตรฐาน ใช้ parser jc/parsers/foo.py
หรือ jc/parsers/foo_s.py (streaming)
เป็นเทมเพลต และวางไฟล์ .py
ลงในโฟลเดอร์ย่อย jcparsers
การขึ้นต่อกันใดๆ สามารถวางไว้ในโฟลเดอร์ jc
ด้านบน jcparsers
และสามารถอิมพอร์ตในโค้ด parser
ชื่อไฟล์ปลั๊กอิน Parser ต้องเป็นชื่อโมดูล Python ที่ถูกต้อง ดังนั้นจึงต้องขึ้นต้นด้วยตัวอักษรและประกอบด้วยตัวอักษรและตัวเลขและขีดล่างทั้งหมด ปลั๊กอินท้องถิ่นอาจแทนที่ตัวแยกวิเคราะห์เริ่มต้น
หมายเหตุ: ไดเร็กทอรีข้อมูลแอปพลิเคชันเป็นไปตามข้อกำหนด XDG Base Directory
เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด ให้ตั้งค่าตัวแปรสภาพแวดล้อมโลแคลเป็น C
หรือ en_US.UTF-8
โดยการแก้ไขตัวแปร LC_ALL
:
$ LC_ALL=C date | jc --date
คุณยังสามารถตั้งค่าตัวแปรสถานที่ทีละรายการได้:
$ export LANG=C
$ export LC_NUMERIC=C
ในระบบเก่าบางระบบ เอาต์พุต UTF-8 จะถูกดาวน์เกรดเป็น ASCII พร้อมด้วย \u
ลำดับการหลีกเลี่ยง หากโลแคล C
ไม่รองรับการเข้ารหัส UTF-8
parsers บางตัวได้คำนวณเขตข้อมูลการประทับเวลายุคที่เพิ่มลงในเอาต์พุต เว้นแต่ชื่อฟิลด์การประทับเวลาจะมีส่วนต่อท้าย _utc
จะถือว่าไร้เดียงสา (เช่น ขึ้นอยู่กับเขตเวลาท้องถิ่นของระบบที่ jc
parser รันอยู่)
หากตรวจพบเขตเวลา UTC ในข้อความของเอาต์พุตคำสั่ง การประทับเวลาจะทราบเขตเวลาและมีคำต่อท้าย _utc
ในชื่อคีย์ (เช่น epoch_utc
) ไม่รองรับเขตเวลาอื่นสำหรับการประทับเวลาที่ทราบ
jc
สามารถใช้กับเชลล์ส่วนใหญ่ได้ เชลล์สมัยใหม่บางตัวมีความสามารถในการดีซีเรียลไลซ์และการกรอง JSON ในตัว ซึ่งทำให้การใช้ jc
สะดวกยิ่งขึ้น
ตัวอย่างเช่น สิ่งต่อไปนี้เป็นไปได้ใน NGS (Next Generation Shell):
myvar = ` ` jc dig www.google.com ` ` [0].answer[0].data
สิ่งนี้จะรัน jc
แยกวิเคราะห์เอาต์พุต JSON และกำหนดโครงสร้างข้อมูลผลลัพธ์ให้กับตัวแปรในโค้ดบรรทัดเดียว
สำหรับตัวอย่างเพิ่มเติมเกี่ยวกับวิธีใช้ jc
ในเชลล์อื่น โปรดดูหน้าวิกินี้
parsers บางตัวเช่น dig
, xml
, csv
ฯลฯ จะทำงานบนทุกแพลตฟอร์ม ตัวแยกวิเคราะห์อื่นๆ ที่แปลงเอาต์พุตเฉพาะแพลตฟอร์มจะสร้างข้อความเตือนหากทำงานบนแพลตฟอร์มที่ไม่รองรับ หากต้องการดูข้อมูล parser ทั้งหมด รวมถึงความเข้ากันได้ ให้รัน jc -ap
คุณยังคงใช้ตัวแยกวิเคราะห์ได้บนแพลตฟอร์มที่ไม่รองรับ ตัวอย่างเช่น คุณอาจต้องการแยกวิเคราะห์ไฟล์ที่มีเอาต์พุต lsof
ของ linux บนแล็ปท็อป macOS หรือ Windows ในกรณีนั้น คุณสามารถระงับข้อความเตือนด้วยตัวเลือก -q
cli หรือพารามิเตอร์ฟังก์ชัน quiet=True
ใน parse()
:
macOS:
cat lsof.out | jc -q --lsof
หรือวินโดวส์:
type lsof.out | jc -q --lsof
ทดสอบเมื่อ:
อย่าลังเลที่จะเพิ่ม/ปรับปรุงโค้ดหรือตัวแยกวิเคราะห์! คุณสามารถใช้ jc/parsers/foo.py
หรือ jc/parsers/foo_s.py (streaming)
parsers เป็นเทมเพลตและส่ง parser ของคุณพร้อมกับคำขอดึง
โปรดดูแนวทางการมีส่วนร่วมสำหรับข้อมูลเพิ่มเติม
ifconfig-parser
โดย KnightWhoSayNixmltodict
โดย Martín Blechruamel.yaml
โดย Anthon van der Neuttrparse
โดย Luis Benitez นี่คือตัวอย่างบางส่วนของเอาต์พุต jc
สำหรับตัวอย่างเพิ่มเติม ดูที่นี่หรือเอกสารประกอบของ parser
arp | jc -p --arp # or: jc -p arp
[
{
"address" : " gateway " ,
"hwtype" : " ether " ,
"hwaddress" : " 00:50:56:f7:4a:fc " ,
"flags_mask" : " C " ,
"iface" : " ens33 "
},
{
"address" : " 192.168.71.1 " ,
"hwtype" : " ether " ,
"hwaddress" : " 00:50:56:c0:00:08 " ,
"flags_mask" : " C " ,
"iface" : " ens33 "
},
{
"address" : " 192.168.71.254 " ,
"hwtype" : " ether " ,
"hwaddress" : " 00:50:56:fe:7a:b4 " ,
"flags_mask" : " C " ,
"iface" : " ens33 "
}
]
cat homes.csv
"Sell", "List", "Living", "Rooms", "Beds", "Baths", "Age", "Acres", "Taxes"
142, 160, 28, 10, 5, 3, 60, 0.28, 3167
175, 180, 18, 8, 4, 1, 12, 0.43, 4033
129, 132, 13, 6, 3, 1, 41, 0.33, 1471
...
cat homes.csv | jc -p --csv
[
{
"Sell" : " 142 " ,
"List" : " 160 " ,
"Living" : " 28 " ,
"Rooms" : " 10 " ,
"Beds" : " 5 " ,
"Baths" : " 3 " ,
"Age" : " 60 " ,
"Acres" : " 0.28 " ,
"Taxes" : " 3167 "
},
{
"Sell" : " 175 " ,
"List" : " 180 " ,
"Living" : " 18 " ,
"Rooms" : " 8 " ,
"Beds" : " 4 " ,
"Baths" : " 1 " ,
"Age" : " 12 " ,
"Acres" : " 0.43 " ,
"Taxes" : " 4033 "
},
{
"Sell" : " 129 " ,
"List" : " 132 " ,
"Living" : " 13 " ,
"Rooms" : " 6 " ,
"Beds" : " 3 " ,
"Baths" : " 1 " ,
"Age" : " 41 " ,
"Acres" : " 0.33 " ,
"Taxes" : " 1471 "
}
]
cat /etc/hosts | jc -p --hosts
[
{
"ip" : " 127.0.0.1 " ,
"hostname" : [
" localhost "
]
},
{
"ip" : " ::1 " ,
"hostname" : [
" ip6-localhost " ,
" ip6-loopback "
]
},
{
"ip" : " fe00::0 " ,
"hostname" : [
" ip6-localnet "
]
}
]
ifconfig | jc -p --ifconfig # or: jc -p ifconfig
[
{
"name" : " ens33 " ,
"flags" : 4163 ,
"state" : [
" UP " ,
" BROADCAST " ,
" RUNNING " ,
" MULTICAST "
],
"mtu" : 1500 ,
"ipv4_addr" : " 192.168.71.137 " ,
"ipv4_mask" : " 255.255.255.0 " ,
"ipv4_bcast" : " 192.168.71.255 " ,
"ipv6_addr" : " fe80::c1cb:715d:bc3e:b8a0 " ,
"ipv6_mask" : 64 ,
"ipv6_scope" : " 0x20 " ,
"mac_addr" : " 00:0c:29:3b:58:0e " ,
"type" : " Ethernet " ,
"rx_packets" : 8061 ,
"rx_bytes" : 1514413 ,
"rx_errors" : 0 ,
"rx_dropped" : 0 ,
"rx_overruns" : 0 ,
"rx_frame" : 0 ,
"tx_packets" : 4502 ,
"tx_bytes" : 866622 ,
"tx_errors" : 0 ,
"tx_dropped" : 0 ,
"tx_overruns" : 0 ,
"tx_carrier" : 0 ,
"tx_collisions" : 0 ,
"metric" : null
}
]
cat example.ini
foo = fiz
bar = buz
[section1]
fruit = apple
color = blue
[section2]
fruit = pear
color = green
cat example.ini | jc -p --ini
{
"foo" : " fiz " ,
"bar" : " buz " ,
"section1" : {
"fruit" : " apple " ,
"color" : " blue "
},
"section2" : {
"fruit" : " pear " ,
"color" : " green "
}
}
$ ls -l /usr/bin | jc -p --ls # or: jc -p ls -l /usr/bin
[
{
"filename" : " apropos " ,
"link_to" : " whatis " ,
"flags" : " lrwxrwxrwx. " ,
"links" : 1 ,
"owner" : " root " ,
"group" : " root " ,
"size" : 6 ,
"date" : " Aug 15 10:53 "
},
{
"filename" : " ar " ,
"flags" : " -rwxr-xr-x. " ,
"links" : 1 ,
"owner" : " root " ,
"group" : " root " ,
"size" : 62744 ,
"date" : " Aug 8 16:14 "
},
{
"filename" : " arch " ,
"flags" : " -rwxr-xr-x. " ,
"links" : 1 ,
"owner" : " root " ,
"group" : " root " ,
"size" : 33080 ,
"date" : " Aug 19 23:25 "
}
]
netstat -apee | jc -p --netstat # or: jc -p netstat -apee
[
{
"proto" : " tcp " ,
"recv_q" : 0 ,
"send_q" : 0 ,
"local_address" : " localhost " ,
"foreign_address" : " 0.0.0.0 " ,
"state" : " LISTEN " ,
"user" : " systemd-resolve " ,
"inode" : 26958 ,
"program_name" : " systemd-resolve " ,
"kind" : " network " ,
"pid" : 887 ,
"local_port" : " domain " ,
"foreign_port" : " * " ,
"transport_protocol" : " tcp " ,
"network_protocol" : " ipv4 "
},
{
"proto" : " tcp6 " ,
"recv_q" : 0 ,
"send_q" : 0 ,
"local_address" : " [::] " ,
"foreign_address" : " [::] " ,
"state" : " LISTEN " ,
"user" : " root " ,
"inode" : 30510 ,
"program_name" : " sshd " ,
"kind" : " network " ,
"pid" : 1186 ,
"local_port" : " ssh " ,
"foreign_port" : " * " ,
"transport_protocol" : " tcp " ,
"network_protocol" : " ipv6 "
},
{
"proto" : " udp " ,
"recv_q" : 0 ,
"send_q" : 0 ,
"local_address" : " localhost " ,
"foreign_address" : " 0.0.0.0 " ,
"state" : null ,
"user" : " systemd-resolve " ,
"inode" : 26957 ,
"program_name" : " systemd-resolve " ,
"kind" : " network " ,
"pid" : 887 ,
"local_port" : " domain " ,
"foreign_port" : " * " ,
"transport_protocol" : " udp " ,
"network_protocol" : " ipv4 "
},
{
"proto" : " raw6 " ,
"recv_q" : 0 ,
"send_q" : 0 ,
"local_address" : " [::] " ,
"foreign_address" : " [::] " ,
"state" : " 7 " ,
"user" : " systemd-network " ,
"inode" : 27001 ,
"program_name" : " systemd-network " ,
"kind" : " network " ,
"pid" : 867 ,
"local_port" : " ipv6-icmp " ,
"foreign_port" : " * " ,
"transport_protocol" : null ,
"network_protocol" : " ipv6 "
},
{
"proto" : " unix " ,
"refcnt" : 2 ,
"flags" : null ,
"type" : " DGRAM " ,
"state" : null ,
"inode" : 33322 ,
"program_name" : " systemd " ,
"path" : " /run/user/1000/systemd/notify " ,
"kind" : " socket " ,
"pid" : 1607
}
]
cat /etc/passwd | jc -p --passwd
[
{
"username" : " root " ,
"password" : " * " ,
"uid" : 0 ,
"gid" : 0 ,
"comment" : " System Administrator " ,
"home" : " /var/root " ,
"shell" : " /bin/sh "
},
{
"username" : " daemon " ,
"password" : " * " ,
"uid" : 1 ,
"gid" : 1 ,
"comment" : " System Services " ,
"home" : " /var/root " ,
"shell" : " /usr/bin/false "
}
]
ping 8.8.8.8 -c 3 | jc -p --ping # or: jc -p ping 8.8.8.8 -c 3
{
"destination_ip" : " 8.8.8.8 " ,
"data_bytes" : 56 ,
"pattern" : null ,
"destination" : " 8.8.8.8 " ,
"packets_transmitted" : 3 ,
"packets_received" : 3 ,
"packet_loss_percent" : 0.0 ,
"duplicates" : 0 ,
"time_ms" : 2005.0 ,
"round_trip_ms_min" : 23.835 ,
"round_trip_ms_avg" : 30.46 ,
"round_trip_ms_max" : 34.838 ,
"round_trip_ms_stddev" : 4.766 ,
"responses" : [
{
"type" : " reply " ,
"timestamp" : null ,
"bytes" : 64 ,
"response_ip" : " 8.8.8.8 " ,
"icmp_seq" : 1 ,
"ttl" : 118 ,
"time_ms" : 23.8 ,
"duplicate" : false
},
{
"type" : " reply " ,
"timestamp" : null ,
"bytes" : 64 ,
"response_ip" : " 8.8.8.8 " ,
"icmp_seq" : 2 ,
"ttl" : 118 ,
"time_ms" : 34.8 ,
"duplicate" : false
},
{
"type" : " reply " ,
"timestamp" : null ,
"bytes" : 64 ,
"response_ip" : " 8.8.8.8 " ,
"icmp_seq" : 3 ,
"ttl" : 118 ,
"time_ms" : 32.7 ,
"duplicate" : false
}
]
}
ps axu | jc -p --ps # or: jc -p ps axu
[
{
"user" : " root " ,
"pid" : 1 ,
"cpu_percent" : 0.0 ,
"mem_percent" : 0.1 ,
"vsz" : 128072 ,
"rss" : 6784 ,
"tty" : null ,
"stat" : " Ss " ,
"start" : " Nov09 " ,
"time" : " 0:08 " ,
"command" : " /usr/lib/systemd/systemd --switched-root --system --deseria... "
},
{
"user" : " root " ,
"pid" : 2 ,
"cpu_percent" : 0.0 ,
"mem_percent" : 0.0 ,
"vsz" : 0 ,
"rss" : 0 ,
"tty" : null ,
"stat" : " S " ,
"start" : " Nov09 " ,
"time" : " 0:00 " ,
"command" : " [kthreadd] "
},
{
"user" : " root " ,
"pid" : 4 ,
"cpu_percent" : 0.0 ,
"mem_percent" : 0.0 ,
"vsz" : 0 ,
"rss" : 0 ,
"tty" : null ,
"stat" : " S< " ,
"start" : " Nov09 " ,
"time" : " 0:00 " ,
"command" : " [kworker/0:0H] "
}
]
traceroute -m 2 8.8.8.8 | jc -p --traceroute
# or: jc -p traceroute -m 2 8.8.8.8
{
"destination_ip" : " 8.8.8.8 " ,
"destination_name" : " 8.8.8.8 " ,
"hops" : [
{
"hop" : 1 ,
"probes" : [
{
"annotation" : null ,
"asn" : null ,
"ip" : " 192.168.1.254 " ,
"name" : " dsldevice.local.net " ,
"rtt" : 6.616
},
{
"annotation" : null ,
"asn" : null ,
"ip" : " 192.168.1.254 " ,
"name" : " dsldevice.local.net " ,
"rtt" : 6.413
},
{
"annotation" : null ,
"asn" : null ,
"ip" : " 192.168.1.254 " ,
"name" : " dsldevice.local.net " ,
"rtt" : 6.308
}
]
},
{
"hop" : 2 ,
"probes" : [
{
"annotation" : null ,
"asn" : null ,
"ip" : " 76.220.24.1 " ,
"name" : " 76-220-24-1.lightspeed.sntcca.sbcglobal.net " ,
"rtt" : 29.367
},
{
"annotation" : null ,
"asn" : null ,
"ip" : " 76.220.24.1 " ,
"name" : " 76-220-24-1.lightspeed.sntcca.sbcglobal.net " ,
"rtt" : 40.197
},
{
"annotation" : null ,
"asn" : null ,
"ip" : " 76.220.24.1 " ,
"name" : " 76-220-24-1.lightspeed.sntcca.sbcglobal.net " ,
"rtt" : 29.162
}
]
}
]
}
uptime | jc -p --uptime # or: jc -p uptime
{
"time" : " 11:35 " ,
"uptime" : " 3 days, 4:03 " ,
"users" : 5 ,
"load_1m" : 1.88 ,
"load_5m" : 2.0 ,
"load_15m" : 1.94 ,
"time_hour" : 11 ,
"time_minute" : 35 ,
"time_second" : null ,
"uptime_days" : 3 ,
"uptime_hours" : 4 ,
"uptime_minutes" : 3 ,
"uptime_total_seconds" : 273780
}
cat cd_catalog.xml
xml version = " 1.0 " encoding = " UTF-8 " ?> < CATALOG > < CD > < TITLE >Empire Burlesque TITLE > < ARTIST >Bob Dylan ARTIST > < COUNTRY >USA COUNTRY > < COMPANY >Columbia COMPANY > < PRICE >10.90 PRICE > < YEAR >1985 YEAR > CD > < CD > < TITLE >Hide your heart TITLE > < ARTIST >Bonnie Tyler ARTIST > < COUNTRY >UK COUNTRY > < COMPANY >CBS Records COMPANY > < PRICE >9.90 PRICE > < YEAR >1988 YEAR > CD > ...
cat cd_catalog.xml | jc -p --xml
{
"CATALOG" : {
"CD" : [
{
"TITLE" : " Empire Burlesque " ,
"ARTIST" : " Bob Dylan " ,
"COUNTRY" : " USA " ,
"COMPANY" : " Columbia " ,
"PRICE" : " 10.90 " ,
"YEAR" : " 1985 "
},
{
"TITLE" : " Hide your heart " ,
"ARTIST" : " Bonnie Tyler " ,
"COUNTRY" : " UK " ,
"COMPANY" : " CBS Records " ,
"PRICE" : " 9.90 " ,
"YEAR" : " 1988 "
}
]
}
}
cat istio.yaml
apiVersion : " authentication.istio.io/v1alpha1 "
kind : " Policy "
metadata :
name : " default "
namespace : " default "
spec :
peers :
- mtls : {}
---
apiVersion : " networking.istio.io/v1alpha3 "
kind : " DestinationRule "
metadata :
name : " default "
namespace : " default "
spec :
host : " *.default.svc.cluster.local "
trafficPolicy :
tls :
mode : ISTIO_MUTUAL
cat istio.yaml | jc -p --yaml
[
{
"apiVersion" : " authentication.istio.io/v1alpha1 " ,
"kind" : " Policy " ,
"metadata" : {
"name" : " default " ,
"namespace" : " default "
},
"spec" : {
"peers" : [
{
"mtls" : {}
}
]
}
},
{
"apiVersion" : " networking.istio.io/v1alpha3 " ,
"kind" : " DestinationRule " ,
"metadata" : {
"name" : " default " ,
"namespace" : " default "
},
"spec" : {
"host" : " *.default.svc.cluster.local " ,
"trafficPolicy" : {
"tls" : {
"mode" : " ISTIO_MUTUAL "
}
}
}
}
]
© 2019-2024 เคลลี่บราซิล