ตรวจสอบเอกสารประกอบแพ็คเกจ
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" : [ <multiple output objects> ],
"_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
<slow output>
เนื่องจากระบบปฏิบัติการมีส่วนร่วมกับบัฟเฟอร์ 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
ในเชลล์อื่น โปรดดูหน้าวิกินี้
parser บางตัวเช่น 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
[
{