2 个不稳定版本
0.3.0 | 2023年1月12日 |
---|---|
0.2.0 | 2023年1月12日 |
#11 在 #sed
19KB
99 行
excavate
从多列文本中挖掘列的命令行工具。
excavate
是一个简单的程序,执行一项特定的任务,按行读取标准输入并获取并打印指定的列。这是一项可以通过一些更复杂的程序完成的任务,例如 awk
或 sed
,但我的记忆力只有金鱼那么好,当我需要的时候,我永远无法记住它们的语法。我个人经常需要获取列,而很少需要任何需要这些工具提供丰富功能集的东西。这就是我创建这个高度专业化的、简单的、一技之长的程序的理由。
用法
excavate <COLUMNS>
<COLUMNS>
以逗号分隔的列表格式提供。每个项目可以是一个正整数,或格式为 "a-b" 的范围。至少必须指定一个列。列 ID 从 0 开始(第一列是 0,第二列是 1,等等)。范围 "a-b" 包括两端,其中 "a" 是低端,"b" 是高端。如果 "a" 大于 "b",则范围为空(不选择任何列)。
例如
字段 | 描述 |
---|---|
0 | 选择第一列 |
0-2 | 选择前三列 |
0,3,5 | 选择第一列、第四列和第六列 |
0-3,5 | 选择前四列和第六列 |
例如
打印匹配 "bash" 的所有进程 ID
$ ps aux | grep bash
henry 7308 0.0 0.0 8988 5652 pts/3 S+ 12:03 0:00 bash
henry 7482 0.0 0.0 8988 5500 pts/4 S+ 12:03 0:00 bash
henry 7656 0.0 0.0 8988 5540 pts/5 S+ 12:03 0:00 bash
henry 8776 0.0 0.0 6564 2176 pts/1 S+ 12:08 0:00 grep --color=auto bash
$ ps aux | grep bash | excavate 1
7308
7482
7656
8826
无论您的输入顺序如何,列都将始终按从低到高的顺序打印,即从左到右在表中,并且会忽略重复项。 excavate 1,2
等同于 excavate 2,1
。
如果一行没有足够的列,excavate
将忽略超出限制的任何字段。例如,运行 excavate 2,10
对输入 bob alice eve
得到 eve
。用 bob alice
运行它将得到一个空行。输出始终具有与输入相同的行数,即使其中一些是空的。
安装
目前,该程序可以通过 cargo
安装
cargo install excavate
构建
excavate
只依赖 Rust,clap
和 nom
。没有外部依赖。克隆此存储库,然后运行
cargo build
依赖关系
~2-2.8MB
~53K SLoC