1 个不稳定版本
0.1.0 | 2020年3月8日 |
---|
#12 in #cut
每月 28 次下载
44KB
1K SLoC
bytie
- 方便的字节流操作
预览
TODO 图片在这里
说明
bytie
允许添加、删除、替换和剪切输入字节的流或文件中的字节。当然,你可以使用 dd
做同样的事情,但我认为它的命令行界面有时有点繁琐。
安装
从源代码构建
克隆仓库
> git clone https://github.com/awidegreen/bytie.git
> cd bytie
使用 cargo
构建 和安装。注意,你需要一个相当新的Rust版本。
> cargo install --path .
通过Cargo
注意:尚未发布
从crates.io安装 bytie
。
> cargo install bytie
用法
示例
在某个位置添加一个字符串。
> echo "foobar" | bytie add -v WORLD 3
fooWORLDbar
在某个位置替换一个字符串,替换数据来自 STDIN
。
# create test file
> echo "foobar" > test
> echo -n "FOO" | bytie test replace 0
FOObar
从输入中剪切/提取字节。
# note positional argument (range)
> echo "foobar" | bytie cut 1:4
ooba
从输入中删除字节。
# note positional argument (length)
> echo "foobar" | bytie delete 1+3
fr
一般 bytie
选项
bytie
有几个通用的命令行选项,这些选项对所有子命令都是有效和可用的
-b|--blocksize
: 默认情况下,bytie
使用1024
字节的块大小从输入中读取,可以使用此选项进行更改。-o|--out
: 如果结果应该写入文件而不是STDOUT
,请使用此选项。-i|--in-place
: 将字节操作输出写入提供的输入<file>
。这仅适用于已指定<file>
的情况。<file>
(可选): 作为子命令操作数据源的输入文件。
注意:根据<file>
参数的规范,bytie
将决定输入数据来源。这意味着,如果省略了<file>
,则STDIN
将作为相应子命令操作的输入流。在这种情况下,如replace
和add
之类的子命令将不能从STDIN
获取替换/插入的输入数据。
更多信息请参阅bytie
的帮助(-h|--help
)。
子命令
bytie
提供以下子命令以满足不同的用例
注意: bytie
的位置指示符(开始,结束)从索引0
开始,所以foobar
中的'b'
位于索引4
。
cut
- 从输入中提取数据
别名:extract
可以通过提供开始和结束位置(或长度,见以下位置参数说明)来使用,以从输入流中截取/提取特定的字节。
在这个上下文中,“截取”意味着只保留指定的范围。与delete
不同,后者会从输入中删除字节。
delete
- 从输入中删除数据
别名:remove
从提供的输入流中删除一系列字节。与cut
不同,在cut
中,指定的范围将是输出。与cut
一样,需要指定位置参数(见下文)。
add
- 将数据插入输入
别名:insert
在指定的起始位置(begin
)将提供的数据插入到输入数据中。要插入/添加的数据可以来自STDIN
或子命令的--value
参数(如果源数据未通过STDIN
提供,则STDIN
是可能的)。
replace
- 替换输入中的数据
别名:substitute
在指定的起始位置(begin
)用提供的数据替换输入数据。要替换的数据可以来自STDIN
或子命令的--value
参数(如果源数据未通过STDIN
提供,则STDIN
是可能的)。
bytie
将始终写入完整的替换数据,这意味着输出数据可能比输入长。
位置参数
cut
和delete
子命令需要一个position
作为参数。其格式如下
<begin> Begin to the end of input
<begin>:<end> Begin to end (exclusive), requires <end> > <begin>
Example: 'foobar', 0:2 == 'fo' or 3:5 == 'ba'
<begin>:=<end> Begin to end (inclusive), requires <end> > <begin>
Example: 'foobar', 0:=2 == 'foo' or 3:=5 == 'bar'
<begin>+<count> Begin plus <count> (exclusive), requires <count> > 0.
The length includes the begin position: 0+10 is 10 bytes, from 0..9 (same as 0:9)
可能的特性扩展
- 使用行模式而不是字节模式。所有子命令应表现相同,但不是操作和操纵字节,而是使用行。如果只想查看文件的特定行,这可能很有用——否则如果记得语法,可以使用
sed
实现。 - 允许在一个执行中执行多个操作
许可证
版权所有 (c) 2020 - Armin Widegreen
bytie
遵循3-Clause BSD许可证(3-Clause BSD 或 https://opensource.org/licenses/BSD-3-Clause)
依赖关系
~5–17MB
~192K SLoC