この資料は Rust 製のコマンドラインツール inslice について紹介するものです。
Rustの環境構築やツールのインストール方法については以下を参照してください
ファイルや標準入力からであれ、テキストから特定の列や行を抽出することは、コマンドラインで行う必要がある一般的なタスクです。しかし、awkやtailのような従来の方法は、簡単で直感的な方法とは言えません。
inslice は、Rustで書かれたコマンドラインユーティリティで、この問題に対処することを目的としており、行と列の番号を使って、入力テキストをリテラルかつ明示的に簡単にフィルタリングすることができます。 rowslc
とcolslc
という2つのバイナリで構成されていて、それぞれ行と列を操作し、シェルのパイプで組み合わせて使用し目的の出力を得ることができます。
GitHub - jace-ys/inslice: A command-line utility for filtering text input by columns and rows
inslice のインストールは次のように行います。
% cargo install --locked insliace
rowslc [OPTIONS] [--] [PATH]
-h
, —-help
ヘルプ情報を表示する
-V
, —-version
バージョン情報を表示する
-f
, --filters <FILTERS>...
適用するフィルター
入力テキストからどの行を抽出するかを行番号で指示する
複数のフィルタを適用することができ、その結果はそれらの結合になる
使用可能なフィルタのフォーマット:
n
の行番号は1から始まるインデックスで、1は先頭行を意味する
n
] - n
番目の行を選択するためのフィルタn:m
] - n
番目からm
番目(含む)の行を選択する範囲ベースのフィルタn:
] - n
番目から最後までの行を選択する範囲ベースのフィルタ:n
] - 1行目からn
行目までを選択する範囲ベースのフィルタ:
] - 最初の行から最後の行までを選択するための範囲ベースのフィルタ指定例:rowslc - -f 1 4:6
標準入力から読み込んだ入力テキストの1、4、5、6番目の行を標準出力に表示する
[PATH]
与えたパスを入力ファイルとして読み込む
パスとしてダッシュ(-
) を指定すると標準入力から読み込む
パスが指定されていない場合は標準入力から読み込む(デフォルト)