コマンド紹介シリーズ:peco
コマンド紹介シリーズ第7回は、peco
というコマンドを紹介します。peco
を使うとクエリを用いてログやプロセスなどをフィルタリングできます。今回はそのようなpeco
について紹介しようと思います。
なお、第6回は以下になりますので、ぜひご興味があればご覧ください。
pecoとは?
peco
とは公式の説明によると、
peco can be a great tool to filter stuff like logs, process stats, find files, because unlike grep, you can type as you think and look through the current results.
と言うことで、冒頭に説明した通りログやプロセススタッツといった様々なテキストデータに対してフィルタリングをすることができるツールとなっています。例えばghq
と言うコマンドを使ったことがある方であれば、その設定の過程でpeco
を使ったことがあるのではないかなと思います。私自身ghq
を利用する時くらいしか使ったことがなかったのですが、調べてみると便利そうだったので今回調べてみました。
使ってみる
インストール
今回も相変わらずですがmacbookを使っているので以下のコマンドでインストールしました。
brew install peco
そのほかのインストール方法については以下をご参照ください。
テキストの検索
ここではデータサイエンティストを目指す方なら結構通った道と思われるタイタニックの生存者を予測するタスクで用いられるCSVファイルを使ってみようと思います。データセットについては以下を参照ください。
まずはデータをtitanic.csv
と言うファイル名で保存し、どのようなデータがあるか確認してみます。データの確認はbat
を使って確認してみます。bat
については以下の記事で解説しているのでぜひ参照ください。
bat titanic.csv
データをみると、12列のデータであり、データ型は整数値や文字列、また一部欠損データがあります。ちなみに、bat
を使っても検索は可能で例えば/hgoehoge
のように入力するとhogehoge
と言う文字列を検索できます。
それではこのファイルをpeco
で開いてみましょう。開き方はいくつかありますが、まずは直接peco
で開いてみましょう。
peco titanic.csv
peco
で開くと画面上部にQUERY>
と言う記載があり、その下にデータが並んでいます。peco
ではこのQUERY>
の部分にクエリを設定することで該当する文字列が含まれる行のみが表示されます。試しに性別がfemale
の行だけ取り出してみると、以下のようになりました。
結果をみると、female
の場所がハイライトされており、検索結果は全てfemale
が含まれていることがわかります。また検索条件には複数指定することができ、例えばMiss
を追加してみると以下のようになりました。
female
かつMiss
が含まれる行だけ抽出できました。なお、右上にIgnoreCase
とあるように、文字の大小は現時点では区別されていないので、例えばMiss
をmISS
のようにしても同じ結果となります。
検索文字の絞り込み方法について
peco
では以下の絞り込み方法が提供されています。
- CaseSensitive: 文字の大小を区別
- IgnoreCase: 文字の大小は区別しない
- SmartCase: 全てのクエリが小文字の時はCaseSensitiveではなく、それ以外はCaseSensitiveに動作する
- Regex: 正規表現を利用
- Fuzzy: 文字列の部分的なパターンを許可して検索
起動時はIgnoreCase
ですが、<C-r
を実行することで切り返すことが可能です。CaseSensitive
にした上で先ほどのfemale
とmISS
を検索条件に指定すると以下のように検索結果がなくなることが確認できました。
パイプを用いた実行
上記の例ではファイルを直接peco
で開きましたが、パイプを利用してテキストを受け渡すことができます。例えば以下のようにです。
cat titanic.csv | peco
その他オプション紹介
まずは表示順を上からではなくしたからできるようにレイアウトを変更するには--layout=bottom-up
を指定します。
peco titanic.csv --layout=bottom-up
次に、実行時点でクエリを登録しておきたいときは--query hgeohoge
と設定します。
peco titanic.csv --query female
まとめ
今回はpeco
について紹介しました。ghq
コマンドの利用設定で初めて知りましたが、今回使ってみると検索がとてもしやすく便利だなと思いました。普段はvim
やbat
を使っていてそこで検索していましたが、peco
だとそもそもマッチする行しか表示されないようにできるのでとても便利です。ぜひ皆さんも使ってみてください。
Discussion