From e4bac3a493705b09e301ddc90dd1b0cee7467c3f Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Thu, 31 Dec 2020 14:10:37 -0800 Subject: [PATCH] add wc parser --- CHANGELOG | 1 + EXAMPLES.md | 26 +++++ README.md | 1 + jc/cli.py | 1 + jc/parsers/wc.py | 130 +++++++++++++++++++++++++ tests/fixtures/centos-7.7/wc.json | 1 + tests/fixtures/centos-7.7/wc.out | 67 +++++++++++++ tests/fixtures/osx-10.14.6/wc.json | 1 + tests/fixtures/osx-10.14.6/wc.out | 150 +++++++++++++++++++++++++++++ 9 files changed, 378 insertions(+) create mode 100644 jc/parsers/wc.py create mode 100644 tests/fixtures/centos-7.7/wc.json create mode 100644 tests/fixtures/centos-7.7/wc.out create mode 100644 tests/fixtures/osx-10.14.6/wc.json create mode 100644 tests/fixtures/osx-10.14.6/wc.out diff --git a/CHANGELOG b/CHANGELOG index 9db03f65..28ef0ceb 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -4,6 +4,7 @@ jc changelog - Add hashsum parser tested on linux, macos - Add hash parser tested on linux, macos - Add cksum parser tested on linux, macos +- Add wc parser tested on linux, macos - Add python 3.9 to github automation tests 20200805 v1.13.4 diff --git a/EXAMPLES.md b/EXAMPLES.md index 73c53a29..34660796 100644 --- a/EXAMPLES.md +++ b/EXAMPLES.md @@ -2540,6 +2540,32 @@ w | jc --w -p # or: jc -p w } ] ``` +### wc +```bash +wc * | jc --wc -p # or: jc -p wc * +``` +```json +[ + { + "filename": "airport-I.json", + "lines": 1, + "words": 30, + "characters": 307 + }, + { + "filename": "airport-I.out", + "lines": 15, + "words": 33, + "characters": 348 + }, + { + "filename": "airport-s.json", + "lines": 1, + "words": 202, + "characters": 2152 + } + ] +``` ### who ```bash who | jc --who -p # or: jc -p who diff --git a/README.md b/README.md index 900430b2..7aea5adf 100644 --- a/README.md +++ b/README.md @@ -175,6 +175,7 @@ The JSON output can be compact (default) or pretty formatted with the `-p` optio - `--uname` enables the `uname -a` command parser - `--uptime` enables the `uptime` command parser - `--w` enables the `w` command parser +- `--wc` enables the `wc` command parser - `--who` enables the `who` command parser - `--xml` enables the `XML` file parser - `--yaml` enables the `YAML` file parser diff --git a/jc/cli.py b/jc/cli.py index 1feac4f4..1a268c24 100644 --- a/jc/cli.py +++ b/jc/cli.py @@ -87,6 +87,7 @@ parsers = [ 'uname', 'uptime', 'w', + 'wc', 'who', 'xml', 'yaml' diff --git a/jc/parsers/wc.py b/jc/parsers/wc.py new file mode 100644 index 00000000..bb323778 --- /dev/null +++ b/jc/parsers/wc.py @@ -0,0 +1,130 @@ +"""jc - JSON CLI output utility `wc` command output parser + +Usage (cli): + + $ wc file.txt | jc --wc + + or + + $ jc wc file.txt + +Usage (module): + + import jc.parsers.wc + result = jc.parsers.wc.parse(wc_command_output) + +Compatibility: + + 'linux', 'darwin', 'cygwin', 'aix', 'freebsd' + +Examples: + + $ wc * | jc --wc -p + [ + { + "filename": "airport-I.json", + "lines": 1, + "words": 30, + "characters": 307 + }, + { + "filename": "airport-I.out", + "lines": 15, + "words": 33, + "characters": 348 + }, + { + "filename": "airport-s.json", + "lines": 1, + "words": 202, + "characters": 2152 + }, + ... + ] +""" +import jc.utils + + +class info(): + version = '1.0' + description = 'wc command parser' + author = 'Kelly Brazil' + author_email = 'kellyjonbrazil@gmail.com' + details = 'Parses wc and sum program output' + + # compatible options: linux, darwin, cygwin, win32, aix, freebsd + compatible = ['linux', 'darwin', 'cygwin', 'aix', 'freebsd'] + magic_commands = ['wc', 'sum'] + + +__version__ = info.version + + +def process(proc_data): + """ + Final processing to conform to the schema. + + Parameters: + + proc_data: (dictionary) raw structured data to process + + Returns: + + List of dictionaries. Structured data with the following schema: + + [ + { + "filename": string, + "lines": integer, + "words": integer, + "characters": integer + } + ] + """ + + for entry in proc_data: + int_list = ['lines', 'words', 'characters'] + for key in int_list: + if key in entry: + try: + entry[key] = int(entry[key]) + except (ValueError): + entry[key] = None + return proc_data + + +def parse(data, raw=False, quiet=False): + """ + Main text parsing function + + Parameters: + + data: (string) text data to parse + raw: (boolean) output preprocessed JSON if True + quiet: (boolean) suppress warning messages if True + + Returns: + + List of dictionaries. Raw or processed structured data. + """ + if not quiet: + jc.utils.compatibility(__name__, info.compatible) + + raw_output = [] + + if jc.utils.has_data(data): + + for line in filter(None, data.splitlines()): + split_line = line.split(maxsplit=3) + item = { + 'filename': split_line[3] if len(split_line) == 4 else None, + 'lines': split_line[0], + 'words': split_line[1], + 'characters': split_line[2] + } + raw_output.append(item) + + if raw: + return raw_output + else: + return process(raw_output) diff --git a/tests/fixtures/centos-7.7/wc.json b/tests/fixtures/centos-7.7/wc.json new file mode 100644 index 00000000..18b47cba --- /dev/null +++ b/tests/fixtures/centos-7.7/wc.json @@ -0,0 +1 @@ +[{"filename": "bin", "lines": 0, "words": 0, "characters": 0}, {"filename": "cksum.out", "lines": 59, "words": 182, "characters": 1943}, {"filename": "devtoolset-3-gcc-4.9.2-6.el7.x86_64.rpm", "lines": 97735, "words": 543757, "characters": 24150660}, {"filename": "digout", "lines": 41, "words": 173, "characters": 1196}, {"filename": "dmidecode.out", "lines": 11810, "words": 38755, "characters": 277288}, {"filename": "Downloads", "lines": 0, "words": 0, "characters": 0}, {"filename": "ethtool.out", "lines": 24, "words": 77, "characters": 748}, {"filename": "file with spaces in the name", "lines": 0, "words": 0, "characters": 0}, {"filename": "git", "lines": 0, "words": 0, "characters": 0}, {"filename": "id-centos.out", "lines": 1, "words": 4, "characters": 129}, {"filename": "ifcfg.json", "lines": 1, "words": 164, "characters": 1600}, {"filename": "ifconfig.out", "lines": 26, "words": 157, "characters": 1278}, {"filename": "iptables-tests", "lines": 0, "words": 0, "characters": 0}, {"filename": "jc", "lines": 455649, "words": 1920906, "characters": 58764280}, {"filename": "jc-1.10.5-linux.sha256", "lines": 1, "words": 2, "characters": 69}, {"filename": "jc-1.10.5-linux.tar.gz", "lines": 80475, "words": 458331, "characters": 21978413}, {"filename": "jc-1.10.5.rpm", "lines": 80635, "words": 456923, "characters": 21716708}, {"filename": "jc-1.11.1-linux.sha256", "lines": 1, "words": 2, "characters": 69}, {"filename": "jc-1.11.1-linux.tar.gz", "lines": 74510, "words": 421533, "characters": 20226936}, {"filename": "jc-1.11.1.sha256", "lines": 1, "words": 2, "characters": 69}, {"filename": "jc-1.11.1.tar.gz", "lines": 73756, "words": 421486, "characters": 20225785}, {"filename": "jc-1.11.2-linux.sha256", "lines": 1, "words": 2, "characters": 69}, {"filename": "jc-1.11.2-linux.tar.gz", "lines": 73861, "words": 421614, "characters": 20231427}, {"filename": "jc-1.11.8-linux.sha256", "lines": 1, "words": 2, "characters": 69}, {"filename": "jc-1.11.8-linux.tar.gz", "lines": 74127, "words": 421977, "characters": 20241790}, {"filename": "jc-1.13.1-linux.sha256", "lines": 1, "words": 2, "characters": 69}, {"filename": "jc-1.13.1-linux.tar.gz", "lines": 74620, "words": 421848, "characters": 20268540}, {"filename": "jc-1.13.2-linux.sha256", "lines": 1, "words": 2, "characters": 69}, {"filename": "jc-1.13.2-linux.tar.gz", "lines": 74786, "words": 423881, "characters": 20263630}, {"filename": "jc-1.13.4-linux.sha256", "lines": 1, "words": 2, "characters": 69}, {"filename": "jc-1.13.4-linux.tar.gz", "lines": 74763, "words": 423408, "characters": 20264188}, {"filename": "jello-1.2.8-linux.sha256", "lines": 1, "words": 2, "characters": 72}, {"filename": "jello-1.2.8-linux.tar.gz", "lines": 72997, "words": 415356, "characters": 19899656}, {"filename": "jello-1.2.9-linux.sha256", "lines": 1, "words": 2, "characters": 72}, {"filename": "jello-1.2.9-linux.tar.gz", "lines": 73111, "words": 414558, "characters": 19901109}, {"filename": "journaljson", "lines": 6557, "words": 479675, "characters": 6014042}, {"filename": "jp", "lines": 19009, "words": 66861, "characters": 3426382}, {"filename": "jp_1.1.12_linux_x86_64.zip", "lines": 4154, "words": 24072, "characters": 1174326}, {"filename": "jq_twitter.json", "lines": 144, "words": 55888, "characters": 738160}, {"filename": "jtbl-1.1.6-linux.sha256", "lines": 1, "words": 2, "characters": 71}, {"filename": "jtbl-1.1.6-linux.tar.gz", "lines": 66057, "words": 377780, "characters": 18224334}, {"filename": "kbls.out", "lines": 58, "words": 520, "characters": 4152}, {"filename": "lastb.out", "lines": 5, "words": 35, "characters": 269}, {"filename": "lsblk-cols", "lines": 7, "words": 95, "characters": 1559}, {"filename": "ping-ip-O-D.out", "lines": 25, "words": 207, "characters": 1751}, {"filename": "ping-ip-O.out", "lines": 25, "words": 187, "characters": 1351}, {"filename": "psfile.txt", "lines": 104, "words": 912, "characters": 7786}, {"filename": "resizeterm.sh", "lines": 16, "words": 53, "characters": 355}, {"filename": "route-6-n.out", "lines": 23, "words": 159, "characters": 1802}, {"filename": "route-6.out", "lines": 23, "words": 159, "characters": 1814}, {"filename": "routeout", "lines": 41, "words": 74, "characters": 690}, {"filename": "sha384sum.out", "lines": 56, "words": 117, "characters": 6434}, {"filename": "shafile.txt", "lines": 56, "words": 117, "characters": 2850}, {"filename": "ss-aeep.out", "lines": 205, "words": 2004, "characters": 26724}, {"filename": "ssout", "lines": 205, "words": 1843, "characters": 20190}, {"filename": "sum.out", "lines": 58, "words": 179, "characters": 1668}, {"filename": "systemctl.out", "lines": 229, "words": 1609, "characters": 38746}, {"filename": "testfiles", "lines": 0, "words": 0, "characters": 0}, {"filename": "tmp", "lines": 0, "words": 0, "characters": 0}, {"filename": "top.out", "lines": 34, "words": 457, "characters": 5314}, {"filename": "tracepath6.out", "lines": 6, "words": 25, "characters": 252}, {"filename": "tracepath-cnn.out", "lines": 34, "words": 105, "characters": 939}, {"filename": "tr.out", "lines": 34, "words": 113, "characters": 1137}, {"filename": "who-aH.out", "lines": 6, "words": 36, "characters": 355}, {"filename": "who.out", "lines": 2, "words": 9, "characters": 93}, {"filename": "whotext", "lines": 5, "words": 28, "characters": 281}, {"filename": "total", "lines": 1490176, "words": 8218431, "characters": 338121827}] diff --git a/tests/fixtures/centos-7.7/wc.out b/tests/fixtures/centos-7.7/wc.out new file mode 100644 index 00000000..31558870 --- /dev/null +++ b/tests/fixtures/centos-7.7/wc.out @@ -0,0 +1,67 @@ + 0 0 0 bin + 59 182 1943 cksum.out + 97735 543757 24150660 devtoolset-3-gcc-4.9.2-6.el7.x86_64.rpm + 41 173 1196 digout + 11810 38755 277288 dmidecode.out + 0 0 0 Downloads + 24 77 748 ethtool.out + 0 0 0 file with spaces in the name + 0 0 0 git + 1 4 129 id-centos.out + 1 164 1600 ifcfg.json + 26 157 1278 ifconfig.out + 0 0 0 iptables-tests + 455649 1920906 58764280 jc + 1 2 69 jc-1.10.5-linux.sha256 + 80475 458331 21978413 jc-1.10.5-linux.tar.gz + 80635 456923 21716708 jc-1.10.5.rpm + 1 2 69 jc-1.11.1-linux.sha256 + 74510 421533 20226936 jc-1.11.1-linux.tar.gz + 1 2 69 jc-1.11.1.sha256 + 73756 421486 20225785 jc-1.11.1.tar.gz + 1 2 69 jc-1.11.2-linux.sha256 + 73861 421614 20231427 jc-1.11.2-linux.tar.gz + 1 2 69 jc-1.11.8-linux.sha256 + 74127 421977 20241790 jc-1.11.8-linux.tar.gz + 1 2 69 jc-1.13.1-linux.sha256 + 74620 421848 20268540 jc-1.13.1-linux.tar.gz + 1 2 69 jc-1.13.2-linux.sha256 + 74786 423881 20263630 jc-1.13.2-linux.tar.gz + 1 2 69 jc-1.13.4-linux.sha256 + 74763 423408 20264188 jc-1.13.4-linux.tar.gz + 1 2 72 jello-1.2.8-linux.sha256 + 72997 415356 19899656 jello-1.2.8-linux.tar.gz + 1 2 72 jello-1.2.9-linux.sha256 + 73111 414558 19901109 jello-1.2.9-linux.tar.gz + 6557 479675 6014042 journaljson + 19009 66861 3426382 jp + 4154 24072 1174326 jp_1.1.12_linux_x86_64.zip + 144 55888 738160 jq_twitter.json + 1 2 71 jtbl-1.1.6-linux.sha256 + 66057 377780 18224334 jtbl-1.1.6-linux.tar.gz + 58 520 4152 kbls.out + 5 35 269 lastb.out + 7 95 1559 lsblk-cols + 25 207 1751 ping-ip-O-D.out + 25 187 1351 ping-ip-O.out + 104 912 7786 psfile.txt + 16 53 355 resizeterm.sh + 23 159 1802 route-6-n.out + 23 159 1814 route-6.out + 41 74 690 routeout + 56 117 6434 sha384sum.out + 56 117 2850 shafile.txt + 205 2004 26724 ss-aeep.out + 205 1843 20190 ssout + 58 179 1668 sum.out + 229 1609 38746 systemctl.out + 0 0 0 testfiles + 0 0 0 tmp + 34 457 5314 top.out + 6 25 252 tracepath6.out + 34 105 939 tracepath-cnn.out + 34 113 1137 tr.out + 6 36 355 who-aH.out + 2 9 93 who.out + 5 28 281 whotext + 1490176 8218431 338121827 total diff --git a/tests/fixtures/osx-10.14.6/wc.json b/tests/fixtures/osx-10.14.6/wc.json new file mode 100644 index 00000000..bf544e85 --- /dev/null +++ b/tests/fixtures/osx-10.14.6/wc.json @@ -0,0 +1 @@ +[{"filename": "airport-I.json", "lines": 1, "words": 30, "characters": 307}, {"filename": "airport-I.out", "lines": 15, "words": 33, "characters": 348}, {"filename": "airport-s.json", "lines": 1, "words": 202, "characters": 2152}, {"filename": "airport-s.out", "lines": 15, "words": 112, "characters": 1423}, {"filename": "arp-a.json", "lines": 98, "words": 170, "characters": 2140}, {"filename": "arp-a.out", "lines": 12, "words": 99, "characters": 968}, {"filename": "arp-a2.json", "lines": 1, "words": 240, "characters": 2979}, {"filename": "arp-a2.out", "lines": 20, "words": 162, "characters": 1597}, {"filename": "cksum.json", "lines": 1, "words": 870, "characters": 10244}, {"filename": "cksum.out", "lines": 145, "words": 435, "characters": 4298}, {"filename": "df-h.json", "lines": 1, "words": 147, "characters": 1686}, {"filename": "df-h.out", "lines": 9, "words": 85, "characters": 1276}, {"filename": "df.json", "lines": 1, "words": 147, "characters": 1764}, {"filename": "df.out", "lines": 9, "words": 85, "characters": 1384}, {"filename": "dig-aaaa.json", "lines": 1, "words": 49, "characters": 438}, {"filename": "dig-aaaa.out", "lines": 20, "words": 80, "characters": 536}, {"filename": "dig-axfr.json", "lines": 1, "words": 585, "characters": 5984}, {"filename": "dig-axfr.out", "lines": 59, "words": 382, "characters": 3511}, {"filename": "dig-x.json", "lines": 1, "words": 49, "characters": 442}, {"filename": "dig-x.out", "lines": 20, "words": 80, "characters": 529}, {"filename": "dig.json", "lines": 1, "words": 138, "characters": 1266}, {"filename": "dig.out", "lines": 41, "words": 169, "characters": 1182}, {"filename": "du.json", "lines": 1, "words": 13448, "characters": 295780}, {"filename": "du.out", "lines": 3357, "words": 6734, "characters": 221925}, {"filename": "file.json", "lines": 1, "words": 370, "characters": 3589}, {"filename": "file.out", "lines": 53, "words": 264, "characters": 2890}, {"filename": "file2.json", "lines": 1, "words": 458, "characters": 4715}, {"filename": "file2.out", "lines": 88, "words": 282, "characters": 4780}, {"filename": "group.json", "lines": 1, "words": 1015, "characters": 9646}, {"filename": "group.out", "lines": 135, "words": 174, "characters": 2823}, {"filename": "id.json", "lines": 1, "words": 79, "characters": 759}, {"filename": "id.out", "lines": 1, "words": 3, "characters": 386}, {"filename": "ifconfig.json", "lines": 1, "words": 1107, "characters": 10823}, {"filename": "ifconfig.out", "lines": 91, "words": 331, "characters": 3779}, {"filename": "ifconfig2.json", "lines": 1, "words": 1162, "characters": 11375}, {"filename": "ifconfig2.out", "lines": 95, "words": 349, "characters": 3979}, {"filename": "last.json", "lines": 1, "words": 5483, "characters": 45274}, {"filename": "last.out", "lines": 383, "words": 3261, "characters": 25827}, {"filename": "ls-R-newlines.json", "lines": 1, "words": 88, "characters": 852}, {"filename": "ls-R-newlines.out", "lines": 36, "words": 43, "characters": 278}, {"filename": "ls-R.json", "lines": 1, "words": 18354, "characters": 469418}, {"filename": "ls-R.out", "lines": 5017, "words": 4805, "characters": 133787}, {"filename": "ls-al.json", "lines": 1, "words": 550, "characters": 4653}, {"filename": "ls-al.out", "lines": 35, "words": 314, "characters": 2111}, {"filename": "ls-alR.json", "lines": 1, "words": 82256, "characters": 959674}, {"filename": "ls-alR.out", "lines": 4996, "words": 41842, "characters": 364578}, {"filename": "ls-alh.json", "lines": 1, "words": 550, "characters": 4684}, {"filename": "ls-alh.out", "lines": 35, "words": 314, "characters": 2111}, {"filename": "ls-glob.json", "lines": 1, "words": 7272, "characters": 91544}, {"filename": "ls-glob.out", "lines": 1831, "words": 1825, "characters": 19369}, {"filename": "ls-l-newlines.json", "lines": 1, "words": 138, "characters": 1162}, {"filename": "ls-l-newlines.out", "lines": 34, "words": 99, "characters": 583}, {"filename": "ls-lR-empty-folder.json", "lines": 1, "words": 34164, "characters": 355547}, {"filename": "ls-lR-empty-folder.out", "lines": 2453, "words": 17640, "characters": 128740}, {"filename": "ls-lR-newlines.json", "lines": 1, "words": 168, "characters": 1450}, {"filename": "ls-lR-newlines.out", "lines": 38, "words": 111, "characters": 656}, {"filename": "ls-newlines.json", "lines": 1, "words": 56, "characters": 498}, {"filename": "ls-newlines.out", "lines": 33, "words": 41, "characters": 260}, {"filename": "ls.json", "lines": 1, "words": 46, "characters": 585}, {"filename": "ls.out", "lines": 23, "words": 23, "characters": 193}, {"filename": "md5.json", "lines": 1, "words": 416, "characters": 7764}, {"filename": "md5.out", "lines": 104, "words": 416, "characters": 5683}, {"filename": "mount.json", "lines": 1, "words": 55, "characters": 672}, {"filename": "mount.out", "lines": 6, "words": 43, "characters": 349}, {"filename": "mount2.json", "lines": 1, "words": 66, "characters": 841}, {"filename": "mount2.out", "lines": 7, "words": 52, "characters": 464}, {"filename": "netstat-Abn.json", "lines": 1, "words": 15133, "characters": 151042}, {"filename": "netstat-Abn.out", "lines": 689, "words": 5961, "characters": 76835}, {"filename": "netstat-An.json", "lines": 1, "words": 14085, "characters": 142438}, {"filename": "netstat-An.out", "lines": 689, "words": 5431, "characters": 71005}, {"filename": "netstat-i.json", "lines": 1, "words": 840, "characters": 7246}, {"filename": "netstat-i.out", "lines": 43, "words": 376, "characters": 3354}, {"filename": "netstat-r.json", "lines": 1, "words": 1456, "characters": 16929}, {"filename": "netstat-r.out", "lines": 93, "words": 435, "characters": 6178}, {"filename": "netstat-rnl.json", "lines": 1, "words": 1940, "characters": 21015}, {"filename": "netstat-rnl.out", "lines": 96, "words": 667, "characters": 10055}, {"filename": "netstat.json", "lines": 1, "words": 14100, "characters": 141195}, {"filename": "netstat.out", "lines": 737, "words": 5316, "characters": 70387}, {"filename": "passwd.json", "lines": 1, "words": 1517, "characters": 14855}, {"filename": "passwd.out", "lines": 108, "words": 292, "characters": 6804}, {"filename": "ping-hostname-p.json", "lines": 1, "words": 67, "characters": 714}, {"filename": "ping-hostname-p.out", "lines": 9, "words": 51, "characters": 400}, {"filename": "ping-hostname-s.json", "lines": 1, "words": 67, "characters": 714}, {"filename": "ping-hostname-s.out", "lines": 8, "words": 49, "characters": 389}, {"filename": "ping-hostname.json", "lines": 1, "words": 67, "characters": 706}, {"filename": "ping-hostname.out", "lines": 8, "words": 49, "characters": 381}, {"filename": "ping-ip-dup.json", "lines": 1, "words": 235, "characters": 2251}, {"filename": "ping-ip-dup.out", "lines": 20, "words": 147, "characters": 1156}, {"filename": "ping-ip-p.json", "lines": 1, "words": 67, "characters": 691}, {"filename": "ping-ip-p.out", "lines": 9, "words": 51, "characters": 381}, {"filename": "ping-ip-s.json", "lines": 1, "words": 67, "characters": 699}, {"filename": "ping-ip-s.out", "lines": 8, "words": 49, "characters": 375}, {"filename": "ping-ip.json", "lines": 1, "words": 67, "characters": 689}, {"filename": "ping-ip.out", "lines": 8, "words": 49, "characters": 367}, {"filename": "ping6-hostname-p.json", "lines": 1, "words": 69, "characters": 786}, {"filename": "ping6-hostname-p.out", "lines": 9, "words": 50, "characters": 460}, {"filename": "ping6-hostname-s.json", "lines": 1, "words": 69, "characters": 788}, {"filename": "ping6-hostname-s.out", "lines": 8, "words": 48, "characters": 449}, {"filename": "ping6-hostname.json", "lines": 1, "words": 69, "characters": 784}, {"filename": "ping6-hostname.out", "lines": 8, "words": 48, "characters": 446}, {"filename": "ping6-ip-dup.json", "lines": 1, "words": 909, "characters": 9447}, {"filename": "ping6-ip-dup.out", "lines": 68, "words": 530, "characters": 5225}, {"filename": "ping6-ip-p.json", "lines": 1, "words": 69, "characters": 683}, {"filename": "ping6-ip-p.out", "lines": 9, "words": 50, "characters": 355}, {"filename": "ping6-ip-s.json", "lines": 1, "words": 69, "characters": 688}, {"filename": "ping6-ip-s.out", "lines": 8, "words": 48, "characters": 352}, {"filename": "ping6-ip.json", "lines": 1, "words": 69, "characters": 681}, {"filename": "ping6-ip.out", "lines": 8, "words": 48, "characters": 341}, {"filename": "pip-list.json", "lines": 1, "words": 20, "characters": 224}, {"filename": "pip-list.out", "lines": 7, "words": 14, "characters": 168}, {"filename": "pip-show.json", "lines": 1, "words": 84, "characters": 1067}, {"filename": "pip-show.out", "lines": 32, "words": 82, "characters": 910}, {"filename": "ps-axu.json", "lines": 1, "words": 8641, "characters": 99173}, {"filename": "ps-axu.out", "lines": 378, "words": 4505, "characters": 60107}, {"filename": "ps-ef.json", "lines": 1, "words": 6379, "characters": 71162}, {"filename": "ps-ef.out", "lines": 378, "words": 3371, "characters": 48758}, {"filename": "shasum.json", "lines": 1, "words": 568, "characters": 11817}, {"filename": "shasum.out", "lines": 142, "words": 284, "characters": 7982}, {"filename": "stat.json", "lines": 1, "words": 4136, "characters": 35152}, {"filename": "stat.out", "lines": 94, "words": 2632, "characters": 15599}, {"filename": "sum.json", "lines": 1, "words": 876, "characters": 9234}, {"filename": "sum.out", "lines": 146, "words": 438, "characters": 3247}, {"filename": "sysctl-a.json", "lines": 1, "words": 2793, "characters": 46473}, {"filename": "sysctl-a.out", "lines": 1287, "words": 2785, "characters": 42505}, {"filename": "traceroute-asn.json", "lines": 1, "words": 108, "characters": 1123}, {"filename": "traceroute-asn.out", "lines": 5, "words": 44, "characters": 323}, {"filename": "traceroute-mult-addresses.json", "lines": 1, "words": 75, "characters": 807}, {"filename": "traceroute-mult-addresses.out", "lines": 4, "words": 39, "characters": 305}, {"filename": "traceroute-no-header.json", "lines": 1, "words": 75, "characters": 793}, {"filename": "traceroute-no-header.out", "lines": 3, "words": 22, "characters": 166}, {"filename": "traceroute-q.json", "lines": 1, "words": 115, "characters": 1240}, {"filename": "traceroute-q.out", "lines": 4, "words": 42, "characters": 272}, {"filename": "traceroute.json", "lines": 1, "words": 244, "characters": 2419}, {"filename": "traceroute.out", "lines": 11, "words": 81, "characters": 579}, {"filename": "traceroute6-mult-addresses.json", "lines": 1, "words": 83, "characters": 859}, {"filename": "traceroute6-mult-addresses.out", "lines": 8, "words": 48, "characters": 401}, {"filename": "traceroute6.json", "lines": 1, "words": 83, "characters": 859}, {"filename": "traceroute6.out", "lines": 7, "words": 40, "characters": 304}, {"filename": "uname-a.json", "lines": 1, "words": 20, "characters": 221}, {"filename": "uname-a.out", "lines": 1, "words": 15, "characters": 131}, {"filename": "uname.out", "lines": 1, "words": 1, "characters": 7}, {"filename": "uptime.json", "lines": 1, "words": 14, "characters": 110}, {"filename": "uptime.out", "lines": 1, "words": 12, "characters": 65}, {"filename": "w.json", "lines": 1, "words": 99, "characters": 836}, {"filename": "w.out", "lines": 10, "words": 69, "characters": 570}, {"filename": "who-a.json", "lines": 1, "words": 86, "characters": 659}, {"filename": "who-a.out", "lines": 9, "words": 62, "characters": 419}, {"filename": "who.json", "lines": 1, "words": 32, "characters": 251}, {"filename": "who.out", "lines": 4, "words": 20, "characters": 128}, {"filename": "total", "lines": 24562, "words": 360529, "characters": 4491471}] diff --git a/tests/fixtures/osx-10.14.6/wc.out b/tests/fixtures/osx-10.14.6/wc.out new file mode 100644 index 00000000..ab19eeec --- /dev/null +++ b/tests/fixtures/osx-10.14.6/wc.out @@ -0,0 +1,150 @@ + 1 30 307 airport-I.json + 15 33 348 airport-I.out + 1 202 2152 airport-s.json + 15 112 1423 airport-s.out + 98 170 2140 arp-a.json + 12 99 968 arp-a.out + 1 240 2979 arp-a2.json + 20 162 1597 arp-a2.out + 1 870 10244 cksum.json + 145 435 4298 cksum.out + 1 147 1686 df-h.json + 9 85 1276 df-h.out + 1 147 1764 df.json + 9 85 1384 df.out + 1 49 438 dig-aaaa.json + 20 80 536 dig-aaaa.out + 1 585 5984 dig-axfr.json + 59 382 3511 dig-axfr.out + 1 49 442 dig-x.json + 20 80 529 dig-x.out + 1 138 1266 dig.json + 41 169 1182 dig.out + 1 13448 295780 du.json + 3357 6734 221925 du.out + 1 370 3589 file.json + 53 264 2890 file.out + 1 458 4715 file2.json + 88 282 4780 file2.out + 1 1015 9646 group.json + 135 174 2823 group.out + 1 79 759 id.json + 1 3 386 id.out + 1 1107 10823 ifconfig.json + 91 331 3779 ifconfig.out + 1 1162 11375 ifconfig2.json + 95 349 3979 ifconfig2.out + 1 5483 45274 last.json + 383 3261 25827 last.out + 1 88 852 ls-R-newlines.json + 36 43 278 ls-R-newlines.out + 1 18354 469418 ls-R.json + 5017 4805 133787 ls-R.out + 1 550 4653 ls-al.json + 35 314 2111 ls-al.out + 1 82256 959674 ls-alR.json + 4996 41842 364578 ls-alR.out + 1 550 4684 ls-alh.json + 35 314 2111 ls-alh.out + 1 7272 91544 ls-glob.json + 1831 1825 19369 ls-glob.out + 1 138 1162 ls-l-newlines.json + 34 99 583 ls-l-newlines.out + 1 34164 355547 ls-lR-empty-folder.json + 2453 17640 128740 ls-lR-empty-folder.out + 1 168 1450 ls-lR-newlines.json + 38 111 656 ls-lR-newlines.out + 1 56 498 ls-newlines.json + 33 41 260 ls-newlines.out + 1 46 585 ls.json + 23 23 193 ls.out + 1 416 7764 md5.json + 104 416 5683 md5.out + 1 55 672 mount.json + 6 43 349 mount.out + 1 66 841 mount2.json + 7 52 464 mount2.out + 1 15133 151042 netstat-Abn.json + 689 5961 76835 netstat-Abn.out + 1 14085 142438 netstat-An.json + 689 5431 71005 netstat-An.out + 1 840 7246 netstat-i.json + 43 376 3354 netstat-i.out + 1 1456 16929 netstat-r.json + 93 435 6178 netstat-r.out + 1 1940 21015 netstat-rnl.json + 96 667 10055 netstat-rnl.out + 1 14100 141195 netstat.json + 737 5316 70387 netstat.out + 1 1517 14855 passwd.json + 108 292 6804 passwd.out + 1 67 714 ping-hostname-p.json + 9 51 400 ping-hostname-p.out + 1 67 714 ping-hostname-s.json + 8 49 389 ping-hostname-s.out + 1 67 706 ping-hostname.json + 8 49 381 ping-hostname.out + 1 235 2251 ping-ip-dup.json + 20 147 1156 ping-ip-dup.out + 1 67 691 ping-ip-p.json + 9 51 381 ping-ip-p.out + 1 67 699 ping-ip-s.json + 8 49 375 ping-ip-s.out + 1 67 689 ping-ip.json + 8 49 367 ping-ip.out + 1 69 786 ping6-hostname-p.json + 9 50 460 ping6-hostname-p.out + 1 69 788 ping6-hostname-s.json + 8 48 449 ping6-hostname-s.out + 1 69 784 ping6-hostname.json + 8 48 446 ping6-hostname.out + 1 909 9447 ping6-ip-dup.json + 68 530 5225 ping6-ip-dup.out + 1 69 683 ping6-ip-p.json + 9 50 355 ping6-ip-p.out + 1 69 688 ping6-ip-s.json + 8 48 352 ping6-ip-s.out + 1 69 681 ping6-ip.json + 8 48 341 ping6-ip.out + 1 20 224 pip-list.json + 7 14 168 pip-list.out + 1 84 1067 pip-show.json + 32 82 910 pip-show.out + 1 8641 99173 ps-axu.json + 378 4505 60107 ps-axu.out + 1 6379 71162 ps-ef.json + 378 3371 48758 ps-ef.out + 1 568 11817 shasum.json + 142 284 7982 shasum.out + 1 4136 35152 stat.json + 94 2632 15599 stat.out + 1 876 9234 sum.json + 146 438 3247 sum.out + 1 2793 46473 sysctl-a.json + 1287 2785 42505 sysctl-a.out + 1 108 1123 traceroute-asn.json + 5 44 323 traceroute-asn.out + 1 75 807 traceroute-mult-addresses.json + 4 39 305 traceroute-mult-addresses.out + 1 75 793 traceroute-no-header.json + 3 22 166 traceroute-no-header.out + 1 115 1240 traceroute-q.json + 4 42 272 traceroute-q.out + 1 244 2419 traceroute.json + 11 81 579 traceroute.out + 1 83 859 traceroute6-mult-addresses.json + 8 48 401 traceroute6-mult-addresses.out + 1 83 859 traceroute6.json + 7 40 304 traceroute6.out + 1 20 221 uname-a.json + 1 15 131 uname-a.out + 1 1 7 uname.out + 1 14 110 uptime.json + 1 12 65 uptime.out + 1 99 836 w.json + 10 69 570 w.out + 1 86 659 who-a.json + 9 62 419 who-a.out + 1 32 251 who.json + 4 20 128 who.out + 24562 360529 4491471 total