6 个版本
0.1.5 | 2023年1月11日 |
---|---|
0.1.4 | 2022年6月25日 |
0.1.3 | 2022年5月21日 |
0.1.2 | 2022年2月7日 |
0.1.0 | 2021年4月26日 |
#1425 in 文本处理
11KB
71 行
aki-txpr-macro
aki-txpr-macro 是更易使用的 libaki-*。
特性
- 旧式 Rust 宏
- 多线程 libaki-*
- 最低支持 rustc 1.56.1 (59eed8a2a 2021-11-01)
示例
示例
管道线文本处理。
shell 命令
aki-xcat -n -f "fixtures/target-list.txt" |\
aki-mline -e "gnu" |\
aki-stats -a --locale "en"
将此转换为 rust 代码
let (next_in, handles) = pipe_line! {
(next_in, handles);
libaki_xcat "xcat" "-n" "-f" "fixtures/target-list.txt";
libaki_mline "mline" "-e" "gnu";
libaki_stats "stats" "-a" "--locale" "en";
};
完整的 rust 示例
fn test_02() -> anyhow::Result<String> {
use aki_txpr_macro::*;
use std::io::BufRead;
//
let next_in = runnel::medium::stdio::StdIn::default();
let handles = Vec::new();
let (next_in, handles) = pipe_line! {
(next_in, handles);
libaki_xcat "xcat" "-n" "-f" "fixtures/target-list.txt";
libaki_mline "mline" "-e" "gnu";
libaki_stats "stats" "-a" "--locale" "en";
};
// main thread
let string = {
let sout = runnel::medium::stringio::StringOut::default();
#[rustfmt::skip]
let sioe = runnel::RunnelIoeBuilder::new().pin(next_in).pout(sout).build();
for line in sioe.pin().lock().lines() {
let line_s = line?;
let line_ss = line_s.as_str();
#[rustfmt::skip]
sioe.pout().lock().write_fmt(format_args!("{}\n", line_ss))?;
}
#[rustfmt::skip]
let x = sioe.pout().lock().buffer_str().to_string();
x
};
//
for handle in handles {
let _ = handle.join();
}
//
Ok(string)
}
libaki-*
命令 | 描述 |
---|---|
aki-gsub | 替换文本命令,通过正则表达式替换。 |
aki-mcolor | 用颜色标记文本 |
aki-mcycle | 用循环颜色标记文本 |
aki-mline | 匹配行,正则表达式文本过滤器,类似于 Linux 命令中的 grep。 |
aki-resort | 对文本行进行排序。您可以使用正则表达式指定 KEY。 |
aki-stats | 输出文本的统计信息,类似于 Linux 命令中的 wc。 |
aki-unbody | 输出前 n 行或后 n 行,类似于 Linux 命令中的 head 和 tail。 |
aki-xcat | 连接纯文本、gzip、xz 和 zstd 文件。 |
aki-xtee | 将标准输入复制到每个文件并将标准输出复制到。 |
变更日志
许可证
本项目许可为 Apache 许可证 2.0 版,或
- LICENSE-APACHE 或 https://www.apache.org/licenses/LICENSE-2.0
- 或 MIT 许可证 (LICENSE-MIT 或 https://opensource.org/licenses/MIT)
任选其一。
依赖关系
~180KB