この資料は Rust 製のコマンドラインツール top_n_tail について紹介するものです。
Rustの環境構築やツールのインストール方法については以下を参照してください
ファイルや標準入力からテキストを抽出するCLIユーティリティです。コマンド名は tnt
です。
GitHub - jayman888/top_n_tail: Extract lines from files CLI tool
入力データで先頭と末尾が不要な場合に重宝します。
標準入力から読み取る場合
$ tnt 5 15 < seq 1 20
$ seq 1 20 | tnt 5 15
ファイルがから読み取る場合
$ seq 1 20 > my_seq.txt && tnt 5 15 -f my_seq.txt
seqを使ったテストデータの生成 9,999,999行を作成してテストしてみました。
はじめに、tailとheadを使って挙動をエミュレートし、tntで実行してみました。
tnt で同様の処理を実行してみます。
$ seq 9999999 | time tail -9999998 | head -9999997 > /dev/null
tail -9999998 9.62s user 8.38s system 93% cpu 19.188 total
head -9999997 > /dev/null 3.12s user 5.18s system 48% cpu 17.220 total
$ seq 9999999 | time tnt 1 9999997 > /dev/null
tnt 1 9999997 > /dev/null 0.36s user 0.21s system 17% cpu 3.286 total
従来の方法では抽出に要した時間は合計で約19秒でしたが、 tnt では約3秒で処理できました。