1 个不稳定版本

0.1.0 2024 年 3 月 4 日

#1693命令行工具

自定义许可证

22KB
165

commr

Rust 版本的 comm

概要

commr 读取两个文件并报告两个文件共有的文本行和每个文件独有的文本行。这些是集合操作,其中共有行是两个文件的 交集,独有行是 差集。如果您熟悉数据库,您也可能将这些视为 连接 操作的类型。

$ commr --help
Rust version of comm

Usage: commr [OPTIONS] <FILE1> <FILE2>

Arguments:
  <FILE1>  Input file 1
  <FILE2>  Input file 2

Options:
  -1                                  Show column 1
  -2                                  Show column 2
  -3                                  Show column 3
  -i, --insensitive                   Case-insensitive comparison of lines
  -d, --output-delimiter <DELIMITER>  Output delimiter [default: "\t"]
  -h, --help                          Print help
  -V, --version                       Print version

输出是三列文本,由 --output-delimiter 分隔

  1. file1 中独有的行
  2. file2 中独有的行
  3. 两个文件共有的行

例如,给定这些文件

$ cat tests/inputs/file1.txt
a
b
c
d
$ cat tests/inputs/file2.txt
B
c

默认输出将如下

$ commr tests/inputs/file1.txt tests/inputs/file2.txt
	B
a
b
		c
d

带有分隔符的输出,使其更容易查看列

$ commr tests/inputs/file1.txt tests/inputs/file2.txt -d='--->'
--->B
a
b
--->--->c
d

一个输入文件可能是 STDIN(标准输入),如下所示(表示为连字符 -

$ commr tests/inputs/file1.txt - -d='--->' <tests/inputs/file2.txt
--->B
a
b
--->--->c
d

两个输入都不能是 STDIN

$ commr - -
Both input files cannot be STDIN ("-")

使用 -|--insensitive 标志进行不区分大小写的比较

$ commr tests/inputs/file1.txt tests/inputs/file2.txt -i
a
		b
		c
d

使用 -1 只查看第一列

$ commr -1 tests/inputs/file1.txt tests/inputs/file2.txt
a
b
d

使用 -2 只查看第一列

$ commr -2 tests/inputs/file1.txt tests/inputs/file2.txt
B

使用 -3 只查看第一列

$ commr -3 tests/inputs/file1.txt tests/inputs/file2.txt
c

使用 -1-2-3 的任意组合来显示列

$ commr -d "|" -13 tests/inputs/file1.txt tests/inputs/file2.txt
a
b
|c
d

理由

BSD/GNU 版本的 comm 使用 -1-2-3 标志来 抑制 列的打印。这个 Rust 版本反转了这些标志的含义,意味着这些列应该被 显示。与 wc 程序类似,默认情况下将显示 所有 列,除非用户指明他们希望查看哪些列。

作者

Ken Youens-Clark [email protected]

依赖关系

~26–42MB
~773K SLoC