#pipe #fifo #thread #filter

aki-txpr-macro

更易使用的libaki-*库

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 文本处理

MIT/Apache

11KB
71

aki-txpr-macro

crate Docs Rust Version Apache2/MIT licensed

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 将标准输入复制到每个文件并将标准输出复制到。

变更日志

此 crate 的变更日志在这里。

许可证

本项目许可为 Apache 许可证 2.0 版,或

任选其一。

依赖关系

~180KB