| jc(1) | JSON Convert | jc(1) |
نام (NAME)
jc - تبدیل خروجی بسیاری از ابزارهای خط فرمان، انواع فایلها و رشتهها به JSON
خلاصه دستور (SYNOPSIS)
نحو استاندارد:
cat FILE | jc [SLICE] [OPTIONS] PARSER
echo STRING | jc [SLICE] [OPTIONS] PARSER
نحو جادویی (Magic):
jc [SLICE] [OPTIONS] /proc/<path-to-procfile>
توضیحات (DESCRIPTION)
jc خروجی بسیاری از ابزارهای خط فرمان، انواع فایلها و رشتههای متداول را برای تجزیهٔ آسانتر در اسکریپتها به فرمت JSON تبدیل میکند. jc ورودی هدایتشده از طریق پایپ را از STDIN دریافت کرده و یک نمایش JSON از خروجی دستور قبلی را به STDOUT میفرستد. به عنوان روشی جایگزین، میتوان با قرار دادن jc در ابتدای دستور مورد نظر برای تبدیل، از «نحو جادویی» استفاده کرد. گزینهها را میتوان بلافاصله پیش از درج دستور به jc ارسال نمود. (نکته: نحو جادویی از دستورهای داخلی شل یا نامهای مستعار پشتیبانی نمیکند)
گزینهها (OPTIONS)
تجزیهکنندهها (Parsers):
- --acpi
- تجزیهکنندهٔ دستور `acpi`
- --airport
- تجزیهکنندهٔ دستور `airport -I`
- --airport-s
- تجزیهکنندهٔ دستور `airport -s`
- --amixer
- تجزیهکنندهٔ دستور `amixer`
- --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
- تجزیهکنندهٔ جریانی (streaming) رشتهٔ CEF
- --certbot
- تجزیهکنندهٔ دستور `certbot`
- --chage
- تجزیهکنندهٔ دستور `chage --list`
- --cksum
- تجزیهکنندهٔ دستورهای `cksum` و `sum`
- --clf
- تجزیهکنندهٔ فایل قالبهای لاگ Common و Combined Log Format
- --clf-s
- تجزیهکنندهٔ جریانی فایل قالبهای لاگ Common و Combined Log Format
- --crontab
- تجزیهکنندهٔ دستور و فایل `crontab`
- --crontab-u
- تجزیهکنندهٔ فایل `crontab` با پشتیبانی از کاربر
- --csv
- تجزیهکنندهٔ فایل CSV
- --csv-ih
- تجزیهکنندهٔ فایل CSV با سربرگ ضمنی (implicit header)
- --csv-s
- تجزیهکنندهٔ جریانی فایل CSV
- --csv-ih-s
- تجزیهکنندهٔ جریانی فایل CSV با سربرگ ضمنی
- --curl-head
- تجزیهکنندهٔ دستور `curl --head`
- --date
- تجزیهکنندهٔ دستور `date`
- --datetime-iso
- تجزیهکنندهٔ رشتهٔ تاریخ و زمان ISO 8601
- --debconf-show
- تجزیهکنندهٔ دستور `debconf-show`.TP --df تجزیهگر دستور `df`
- --dig
- تجزیهگر دستور `dig`
- --dir
- تجزیهگر دستور `dir`
- --dmidecode
- تجزیهگر دستور `dmidecode`
- --dpkg-l
- تجزیهگر دستور `dpkg -l`
- --du
- تجزیهگر دستور `du`
- --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.TP --ipconfig تجزیهکننده دستور ویندوز `ipconfig`
- --iptables
- تجزیهکننده دستور `iptables`
- --ip-route
- تجزیهکننده دستور `ip route`
- --iw-scan
- تجزیهکننده دستور `iw dev [device] scan`
- --iwconfig
- تجزیهکننده دستور `iwconfig`
- --jar-manifest
- تجزیهکننده فایل 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`
- --net-localgroup
- تجزیهکننده دستور `net localgroup`
- --net-user
- تجزیهکننده دستور `net user`
- --nmcli
- تجزیهکننده دستور `nmcli`
- --nsd-control
- تجزیهکننده دستور `nsd-control`
- --ntpq
- تجزیهکننده دستور `ntpq -p`
- --openvpn
- تجزیهکننده فایل openvpn-status.log
- --os-prober
- تجزیهکننده دستور `os-prober`
- --os-release
- تجزیهکننده فایل `/etc/os-release`
- --pacman
- تجزیهکننده دستور `pacman`.TP --passwd تجزیهکنندهٔ فایل `/etc/passwd`
- --path
- تجزیهکنندهٔ رشتهٔ مسیر POSIX
- --path-list
- تجزیهکنندهٔ رشتهٔ فهرست مسیرهای POSIX
- --pci-ids
- تجزیهکنندهٔ فایل `pci.ids`
- --pgpass
- تجزیهکنندهٔ فایل گذرواژهٔ PostgreSQL
- --pidstat
- تجزیهکنندهٔ دستور `pidstat -H`
- --pidstat-s
- تجزیهکنندهٔ جریانی دستور `pidstat -H`
- --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/`
- --proc-buddyinfo
- تجزیهکنندهٔ فایل `/proc/buddyinfo`
- --proc-cmdline
- تجزیهکنندهٔ فایل `/proc/cmdline`
- --proc-consoles
- تجزیهکنندهٔ فایل `/proc/consoles`
- --proc-cpuinfo
- تجزیهکنندهٔ فایل `/proc/cpuinfo`
- --proc-crypto
- تجزیهکنندهٔ فایل `/proc/crypto`
- --proc-devices
- تجزیهکنندهٔ فایل `/proc/devices`
- --proc-diskstats
- تجزیهکنندهٔ فایل `/proc/diskstats`
- --proc-filesystems
- تجزیهکنندهٔ فایل `/proc/filesystems`
- --proc-interrupts
- تجزیهکنندهٔ فایل `/proc/interrupts`
- --proc-iomem
- تجزیهکنندهٔ فایل `/proc/iomem`
- --proc-ioports
- تجزیهکنندهٔ فایل `/proc/ioports`
- --proc-loadavg
- تجزیهکنندهٔ فایل `/proc/loadavg`
- --proc-locks
- تجزیهکنندهٔ فایل `/proc/locks`
- --proc-meminfo
- تجزیهکنندهٔ فایل `/proc/meminfo`
- --proc-modules
- تجزیهکنندهٔ فایل `/proc/modules`
- --proc-mtrr
- تجزیهکنندهٔ فایل `/proc/mtrr`
- --proc-pagetypeinfo
- تجزیهکنندهٔ فایل `/proc/pagetypeinfo`
- --proc-partitions
- تجزیهکنندهٔ فایل `/proc/partitions`
- --proc-slabinfo
- تجزیهکنندهٔ فایل `/proc/slabinfo`
- --proc-softirqs
- تجزیهکنندهٔ فایل `/proc/softirqs`.TP --proc-stat تجزیهکننده فایل `/proc/stat`
- --proc-swaps
- تجزیهکننده فایل `/proc/swaps`
- --proc-uptime
- تجزیهکننده فایل `/proc/uptime`
- --proc-version
- تجزیهکننده فایل `/proc/version`
- --proc-vmallocinfo
- تجزیهکننده فایل `/proc/vmallocinfo`
- --proc-vmstat
- تجزیهکننده فایل `/proc/vmstat`
- --proc-zoneinfo
- تجزیهکننده فایل `/proc/zoneinfo`
- --proc-driver-rtc
- تجزیهکننده فایل `/proc/driver/rtc`
- --proc-net-arp
- تجزیهکننده فایل `/proc/net/arp`
- --proc-net-dev
- تجزیهکننده فایل `/proc/net/dev`
- --proc-net-dev-mcast
- تجزیهکننده فایل `/proc/net/dev_mcast`
- --proc-net-if-inet6
- تجزیهکننده فایل `/proc/net/if_inet6`
- --proc-net-igmp
- تجزیهکننده فایل `/proc/net/igmp`
- --proc-net-igmp6
- تجزیهکننده فایل `/proc/net/igmp6`
- --proc-net-ipv6-route
- تجزیهکننده فایل `/proc/net/ipv6_route`
- --proc-net-netlink
- تجزیهکننده فایل `/proc/net/netlink`
- --proc-net-netstat
- تجزیهکننده فایل `/proc/net/netstat`
- --proc-net-packet
- تجزیهکننده فایل `/proc/net/packet`
- --proc-net-protocols
- تجزیهکننده فایل `/proc/net/protocols`
- --proc-net-route
- تجزیهکننده فایل `/proc/net/route`
- --proc-net-tcp
- تجزیهکننده فایلهای `/proc/net/tcp` و `/proc/net/tcp6`
- --proc-net-unix
- تجزیهکننده فایل `/proc/net/unix`
- --proc-pid-fdinfo
- تجزیهکننده فایل `/proc/<pid>/fdinfo/<fd>`
- --proc-pid-io
- تجزیهکننده فایل `/proc/<pid>/io`
- --proc-pid-maps
- تجزیهکننده فایل `/proc/<pid>/maps`
- --proc-pid-mountinfo
- تجزیهکننده فایل `/proc/<pid>/mountinfo`
- --proc-pid-numa-maps
- تجزیهکننده فایل `/proc/<pid>/numa_maps`
- --proc-pid-smaps
- تجزیهکننده فایل `/proc/<pid>/smaps`
- --proc-pid-stat
- تجزیهکننده فایل `/proc/<pid>/stat`
- --proc-pid-statm
- تجزیهکننده فایل `/proc/<pid>/statm`
- --proc-pid-status
- تجزیهکننده فایل `/proc/<pid>/status`
- --ps
- تجزیهکننده دستور `ps`
- --resolve-conf
- تجزیهکننده فایل `/etc/resolve.conf`
- --route
- تجزیهکننده دستور `route`
- --route-print
- تجزیهکننده دستور `route print`
- --rpm-qi
- تجزیهکننده دستور `rpm -qi`.TP --rsync تجزیهکننده دستور `rsync`
- --rsync-s
- تجزیهکننده جریانی دستور `rsync`
- --semver
- تجزیهکننده رشته Semantic Version
- --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
- --toml
- تجزیهکننده فایل TOML
- --top
- تجزیهکننده دستور `top -b`
- --top-s
- تجزیهکننده جریانی دستور `top -b`
- --tracepath
- تجزیهکننده دستورهای `tracepath` و `tracepath6`
- --traceroute
- تجزیهکننده دستورهای `traceroute` و `traceroute6`
- --traceroute-s
- تجزیهکننده جریانی دستورهای `traceroute` و `traceroute6`
- --tsv
- تجزیهکننده فایل TSV
- --tsv-ih
- تجزیهکننده فایل TSV با سرآیند ضمنی
- --tsv-s
- تجزیهکننده جریانی فایل TSV
- --tsv-ih-s
- تجزیهکننده جریانی فایل TSV با سرآیند ضمنی
- --tune2fs
- تجزیهکننده دستور `tune2fs -l`.TP --typeset تجزیهگر دستورهای `typeset` و `declare`
- --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`
- --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-crl
- تجزیهگر فایلهای فهرست ابطال گواهی (CRL) با ساختار X.509 PEM و DER
- --x509-csr
- تجزیهگر فایلهای درخواست گواهی (CSR) با ساختار X.509 PEM و DER
- --xml
- تجزیهگر فایلهای XML
- --xrandr
- تجزیهگر دستور `xrandr`
- --yaml
- تجزیهگر فایلهای YAML
- --zipinfo
- تجزیهگر دستور `zipinfo`
- --zpool-iostat
- تجزیهگر دستور `zpool iostat`
- --zpool-status
- تجزیهگر دستور `zpool status`
گزینهها:
- -a, --about
- درباره jc (خروجی JSON یا YAML)
- -C, --force-color
- اجبار به خروجی رنگی حتی هنگام استفاده از لولهها (بر -m و متغیر محیطی NO_COLOR اولویت دارد)
- -d, --debug
- اشکالزدایی - نمایش ردگیری اشکال (traceback) (برای ردگیری با جزئیات بیشتر از -dd استفاده کنید)
- -h, --help
- راهنما (--help --parser_name برای مستندات تجزیهگر). برای نمایش تجزیهگرهای پنهان دو بار استفاده کنید (مانند -hh). برای نمایش دستهبندیهای تجزیهگر سه بار استفاده کنید (مانند -hhh).
- -m, --monochrome
- خروجی تکرنگ
- -M, --meta-out
- افزودن فراداده به خروجی شامل برچسب زمان، نام تجزیهگر، دستور جادویی، کد خروج دستور جادویی و غیره.
- -p, --pretty
- خروجی با قالببندی زیبا (pretty-print)
- -q, --quiet
- حالت بیصدا. سرکوب پیامهای هشدار تجزیهگر (از -qq برای نادیده گرفتن خطاهای تجزیهگر جریانی استفاده کنید)
- -r, --raw
- خروجی خام. ارائه خروجی تحتاللفظیتر، معمولاً با مقادیر رشتهای و بدون پردازش معنایی اضافی.TP -s, --slurp بلعیدن (slurp) چند خط در یک آرایه. (برای یافتن تجزیهکنندههای سازگار از -hhh استفاده کنید)
- -u, --unbuffer
- غیرفعال کردن بافر خروجی (مفید برای دادههای جاریِ کُند با تجزیهکنندههای جریانی)
- -v, --version
- اطلاعات نسخه
- -y, --yaml-out
- خروجی YAML
- -B, --bash-comp
- تولید اسکریپت تکمیل خودکار پوسته Bash
- -Z, --zsh-comp
- تولید اسکریپت تکمیل خودکار پوسته Zsh
برش (Slice):
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 شامل نمیشود (non-inclusive). برشهای مثبت از اولین خط ورودی به سمت انتها شمارش میکنند که با 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 خط مانده به انتها
- :
- تمامی
خطوط.SH
"یکجاخوانی
(SLURP)" برخی
تجزیهکنندهها
از
ورودیهای
چندگانه
پشتیبانی
میکنند و
میتوانند
در یک گذر،
آرایهای
از نتایج را
تولید کنند.
یکجاخوانی
(Slurping) برای
تجزیهکنندههای
رشتهای که
ورودی
تکخطی
میپذیرند
کار میکند
(مانند url و
ip-address). برای
مشاهدهٔ
فهرست
تجزیهکنندههایی
که از
گزینهٔ --slurp
پشتیبانی
میکنند،
از jc -hhh
استفاده
کنید.
برای مثال، میتوانید فایلی شامل چندین نشانی IP (هر کدام در یک خط) را به همراه گزینهٔ --slurp به jc ارسال کنید تا آرایهای از نتایج در خروجی تولید شود:
$ 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 مربوط میشود.
کدهای خروج (EXIT CODES)
هرگونه خطای مهلک در jc کد خروج 100 را تولید خواهد کرد، در غیر این صورت کد خروج 0 خواهد بود.
هنگام استفاده از نحو «جادویی» (مانند jc ifconfig eth0)، دستور jc کد خروج برنامهٔ در حال تجزیه را ذخیره کرده و آن را به کد خروج jc اضافه میکند. به این ترتیب، تشخیص اینکه آیا خطا از برنامهٔ تجزیهشده بوده یا از jc آسانتر خواهد بود.
مثالهای زیر را با استفاده از ifconfig در نظر بگیرید:
کد خروج ifconfig = 1، کد خروج jc = 0، کد خروج ترکیبی = 1 (خطا در ifconfig)
کد خروج ifconfig = 0، کد خروج jc = 100، کد خروج ترکیبی = 100 (خطا در jc)
کد خروج ifconfig = 1، کد خروج jc = 100، کد خروج ترکیبی = 101 (خطا در هر دو ifconfig و jc)
هنگام استفاده از نحو «جادویی»، میتوانید با استفاده از گزینهٔ --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، brightblue، brightmagenta، brightcyan، white یا default
برای نمونه، جهت تنظیم روی رنگهای پیشفرض:
یا
JC_COLORS=default,default,default,default
غیرفعالسازی خروجی رنگی
میتوانید متغیر محیطی NO_COLOR را روی هر مقداری تنظیم کنید تا خروجی رنگی در jc غیرفعال شود. توجه داشته باشید که استفاده از گزینهٔ -C برای اجبار خروجی رنگی، بر هر دو متغیر محیطی NO_COLOR و گزینهٔ -m اولویت خواهد داشت.
تجزیهکنندههای جریانی (STREAMING PARSERS)
بیشتر تجزیهکنندهها تمام دادهها را از STDIN بارگذاری، آن را تجزیه و سپس کل سند JSON را به صورت متوالی خروجی میدهند. برخی تجزیهکنندههای جریانی وجود دارند (مانند ls-s، ping-s و غیره) که بلافاصله پس از دریافت دادهها از STDIN، پردازش و خروجی دادن خطبهخط دادهها را به صورت JSON Lines (معروف به NDJSON) آغاز میکنند. این قابلیت میتواند میزان حافظهٔ مورد نیاز برای تجزیهٔ حجم بالایی از خروجی دستورها (مانند ls -lR /) را به طور چشمگیری کاهش داده و گاهی دادهها را سریعتر پردازش کند. تجزیهکنندههای جریانی رفتاری کمی متفاوت با تجزیهکنندههای استاندارد دارند که در ادامه شرح داده شده است.
نادیدهگرفتن خطاها
شاید بخواهید هنگام استفاده از تجزیهکنندههای جریانی، از خطاهای تجزیه چشمپوشی کنید؛ چرا که ممکن است این تجزیهکنندهها در خطلولههای پردازشی طولانیمدت به کار روند و بروز خطا میتواند ارتباط خطلوله (pipe) را قطع کند. برای نادیده گرفتن خطاهای تجزیه، از گزینهٔ -qq در خط فرمان استفاده کنید. این کار یک شیء _jc_meta با ویژگی success به خروجی JSON اضافه میکند. اگر مقدار success برابر با true باشد، خط بدون مشکل تجزیه شده است. اگر success برابر با false باشد، مشکلی در تجزیه رخ داده و فیلدهای error و line به ترتیب برای نمایش توضیح کوتاهی از خطا و محتوای خط غیرقابلتجزیه اضافه خواهند شد:
{
"command_data": "data",
"_jc_meta": {
"success": true
}
}
خط ناموفق در تجزیه به همراه گزینهٔ -qq:
{
"_jc_meta": {
"success": false,
"error": "error message",
"line": "original line data"
}
}
بیشتر سیستمعاملها خروجیای را که از فرآیندی به فرآیند دیگر هدایت (pipe) میشود، در بافر قرار میدهند. این بافر معمولاً حدود ۴ کیلوبایت است. هنگام مشاهدهٔ خروجی در پایانه (ترمینال)، بافر سیستمعامل درگیر نمیشود و خروجی بلافاصله روی صفحه نمایش داده میشود. با این حال، هنگام هدایت چندین فرآیند به یکدیگر از طریق pipe، اگر سرعت ورودی دادهها بسیار پایین باشد (مانند ping)، ممکن است به نظر برسد خروجی متوقف شده است:
$ ping 1.1.1.1 | jc --ping-s | jq <slow output>
این موضوع به این دلیل است که سیستمعامل در این مثال بافر ۴ کیلوبایتی را بین jc و jq فعال میکند. برای نمایش بیدرنگ دادهها در پایانه، میتوانید با استفاده از گزینهٔ -u (نامنباز / unbuffer) در خط فرمان، بافر را غیرفعال کنید:
$ ping 1.1.1.1 | jc --ping-s -u | jq
{"type":"reply","pattern":null,"timestamp":null,"bytes":"64",...}
{"type":"reply","pattern":null,"timestamp":null,"bytes":"64",...}
etc...
نکته: خروجی بدون بافر ممکن است در جریانهای دادهای بزرگ سرعت کمتری داشته باشد. افزونههای تجزیهکننده میتوانند در پوشهٔ jc/jcparsers در «دایرکتوری دادههای برنامه» محلی شما قرار گیرند:
- Linux/unix: $HOME/.local/share/jc/jcparsers - macOS: $HOME/Library/Application Support/jc/jcparsers - Windows: $LOCALAPPDATA\jc\jc\jcparsers
افزونههای تجزیهکننده فایلهای ماژول استاندارد python هستند. از تجزیهکنندهٔ jc/parsers/foo.py یا jc/parsers/foo_s.py (جریانی) به عنوان الگو استفاده کنید و به سادگی یک فایل .py را در زیرپوشهٔ jcparsers قرار دهید. هرگونه وابستگی را میتوان در پوشهٔ jc بالاتر از jcparsers قرار داد و در کد تجزیهکننده وارد (import) کرد.
نام فایلهای افزونههای تجزیهکننده باید نامهای معتبر ماژول python باشند و بنابراین باید با یک حرف شروع شده و تنها شامل حروف و ارقام و خط زیر (_) باشند. افزونههای محلی میتوانند جایگزین تجزیهکنندههای پیشفرض شوند.
نکته: دایرکتوری دادههای برنامه از XDG Base Directory Specification پیروی میکند.
هشدارها (CAVEATS)
تنظیمات محلی (Locale)
برای دریافت بهترین نتیجه، با ویرایش متغیر LC_ALL متغیرهای محیطی locale را روی C یا en_US.UTF-8 تنظیم کنید:
همچنین میتوانید متغیرهای locale را به صورت جداگانه تنظیم کنید:
$ export LC_NUMERIC=C
در برخی از سیستمهای قدیمیتر، اگر locale با مقدار C از کدگذاری UTF-8 پشتیبانی نکند، خروجی UTF-8 با توالیهای گریز \u به ASCII تقلیل خواهد یافت.
منطقههای زمانی (Timezones)
برخی از تجزیهکنندهها دارای فیلدهای برچسب زمان (timestamp) محاسبهشدهٔ epoch هستند که به خروجی اضافه شدهاند. مگر اینکه نام فیلد برچسب زمان دارای پسوند _utc باشد، در غیر این صورت ناآگاه از منطقهٔ زمانی (naive) در نظر گرفته میشود (یعنی بر اساس منطقهٔ زمانی محلی سیستمی است که تجزیهکنندهٔ jc روی آن اجرا شده است).
اگر یک منطقهٔ زمانی UTC در متن خروجی دستور تشخیص داده شود، برچسب زمان آگاه از منطقهٔ زمانی بوده و پسوند _utc در نام کلید خواهد داشت. (مانند epoch_utc). هیچ منطقهٔ زمانی دیگری برای برچسبهای زمانی آگاه پشتیبانی نمیشود.
مثالها (EXAMPLES)
نحو استاندارد:
$ cat /proc/meminfo | jc --pretty --proc
نحو جادویی (Magic Syntax):
$ jc --pretty /proc/meminfo
برش خطوط (Line Slicing):
برای مستندات تجزیهکننده:
راهنمایی بیشتر:
$ jc -hhh # list parsers by category tags Kelly Brazil (kellyjonbrazil@gmail.com)
کپیرایت و تکثیر (COPYRIGHT)
حق نشر (c) 2019-2026 Kelly Brazil
مجوز: مجوز MIT
| 2026-06-18 | 1.25.7 |