LoginSignup
6
5

More than 5 years have passed since last update.

Percol | percol の基本操作

Posted at

Percol | percol の基本操作

概要

Percol はPython製のインタラクティブな grep ツールです。

同種のツールとして以下があります。

name impl lang github url
canything C https://github.com/keiji0/canything
zaw Shell https://github.com/zsh-users/zaw
peco Go https://github.com/peco/peco
fzf Ruby https://github.com/junegunn/fzf

利用例

利用例1:単一ファイル内のテキスト検索

銀行コードと銀行名のリストを絞り込んでみます。

banks.txt
0001|みずほ銀行
0005|三菱東京UFJ銀行
0009|三井住友銀行
0010|りそな銀行
0017|埼玉りそな銀行
0033|ジャパンネット銀行
0034|セブン銀行
0035|ソニー銀行
0036|楽天銀行
0038|住信SBIネット銀行
0039|じぶん銀行
0040|イオン銀行
0041|大和ネクスト銀行
0116|北海道銀行
0117|青森銀行
0118|みちのく銀行
0119|秋田銀行
0120|北都銀行
0121|荘内銀行
0122|山形銀行
0123|岩手銀行
0124|東北銀行
0125|七十七銀行
0126|東邦銀行
0128|群馬銀行
0129|足利銀行
0130|常陽銀行
0131|筑波銀行
0133|武蔵野銀行
0134|千葉銀行
0135|千葉興業銀行
0137|東京都民銀行
0138|横浜銀行
0140|第四銀行
0141|北越銀行
0142|山梨中央銀行
0143|八十二銀行
0144|北陸銀行
0145|富山銀行
0146|北國銀行
0147|福井銀行
0149|静岡銀行
0150|スルガ銀行
0151|清水銀行
0152|大垣共立銀行
0153|十六銀行
0154|三重銀行
0155|百五銀行
0157|滋賀銀行
0158|京都銀行
0159|近畿大阪銀行
0161|池田泉州銀行
0162|南都銀行
0163|紀陽銀行
0164|但馬銀行
0166|鳥取銀行
0167|山陰合同銀行
0168|中国銀行
0169|広島銀行
0170|山口銀行
0172|阿波銀行
0173|百十四銀行
0174|伊予銀行
0175|四国銀行
0177|福岡銀行
0178|筑邦銀行
0179|佐賀銀行
0180|十八銀行
0181|親和銀行
0182|肥後銀行
0183|大分銀行
0184|宮崎銀行
0185|鹿児島銀行
0187|琉球銀行
0188|沖縄銀行
0190|西日本シティ銀行
0191|北九州銀行
0288|三菱UFJ信託銀行
0289|みずほ信託銀行
0294|三井住友信託銀行
0297|日本マスタートラスト信託銀行
0304|野村信託銀行
0307|オリックス銀行
0322|新銀行東京
0324|日本トラスティサービス信託銀行
0325|資産管理サービス信託銀行
0397|新生銀行
0398|あおぞら銀行
0401|シティバンク銀行
0402|ジェーピーモルガン銀行
0403|アメリカ銀行
0411|香港上海銀行
0430|ドイツ銀行
0472|SBJ銀行
0501|北洋銀行
0508|きらやか銀行
0509|北日本銀行
0512|仙台銀行
0513|福島銀行
0514|大東銀行
0516|東和銀行
0517|栃木銀行
0522|京葉銀行
0525|東日本銀行
0526|東京スター銀行
0530|神奈川銀行
0532|大光銀行
0533|長野銀行
0534|富山第一銀行
0537|福邦銀行
0538|静岡中央銀行
0542|愛知銀行
0543|名古屋銀行
0544|中京銀行
0546|第三銀行
0554|関西アーバン銀行
0555|大正銀行
0562|みなと銀行
0565|島根銀行
0566|トマト銀行
0569|もみじ銀行
0570|西京銀行
0572|徳島銀行
0573|香川銀行
0576|愛媛銀行
0578|高知銀行
0582|福岡中央銀行
0583|佐賀共栄銀行
0585|長崎銀行
0587|熊本銀行
0590|豊和銀行
0591|宮崎太陽銀行
0594|南日本銀行
0596|沖縄海邦銀行
0597|八千代銀行
  • 三菱東京UFJ銀行を絞り込む

絞り込まれていく様子。

$ percol banks.txt
QUERY> 三                                                            (1/6) [1/1]
0005|三菱東京UFJ銀行
0009|三井住友銀行
0154|三重銀行
0288|三菱UFJ信託銀行
0294|三井住友信託銀行
0546|第三銀行
QUERY> 三菱                                                            (1/2) [1/1]
0005|三菱東京UFJ銀行
288|三菱UFJ信託銀行
QUERY> 三菱東京                                                            (1/1) [1/1]
0005|三菱東京UFJ銀行
  • 絞り込み+カーソル移動で三井住友銀行を選択する

三を入力後、2番目にデータがあるので下カーソルを一回入力後、Enterで三井住友銀行が標準出力されます

$ percol banks.txt
QUERY> 三                                                            (1/6) [1/1]
0005|三菱東京UFJ銀行
0009|三井住友銀行
0154|三重銀行
0288|三菱UFJ信託銀行
0294|三井住友信託銀行
0546|第三銀行

$ percol banks.txt
0009|三井住友銀行

利用例2:複数のコマンドとパイプを利用する

自作 gem tudu の .rb ファイルから version.rb を選択し、 cat で表示する

  • 絞り込み前
$ find . -name "*.rb" | percol | xargs cat -n

QUERY>                                                            (1/12)[1/1]
./lib/task.rb
./lib/tasks.rb
./lib/tudu/version.rb
./lib/tudu_core.rb
./lib/tudu_dsl.rb
./lib/tudu_file_keys.rb
./lib/tudu_paths.rb
./lib/tudu_templates.rb
./spec/spec_helper.rb
./spec/tasks_spec.rb
./spec/tudu_core_spec.rb
./spec/tudu_dsl_spec.rb
  • v で絞り込み
QUERY>
v                                                         (1/1)[1/1]
./lib/tudu/version.rb
  • 絞り込めたのでEnterを押下して結果を表示
$ find . -name "*.rb" | percol | xargs cat -n
     1  # encoding: utf-8
     2  # =TodoManage Module
     3  module Tudu
     4    VERSION = '0.0.5'
     5  end

利用例3:複数要素を選択

自作 gem tudu の .rb ファイルから *_spec.rb に一致するファイルを全て選択し、 cat で表示する

  • 絞り込み前
$ find . -name "*.rb" | percol | wc

QUERY>                                                         (1/12)[1/1]
./lib/task.rb
./lib/tasks.rb
./lib/tudu/version.rb
./lib/tudu_core.rb
./lib/tudu_dsl.rb
./lib/tudu_file_keys.rb
./lib/tudu_paths.rb
./lib/tudu_templates.rb
./spec/spec_helper.rb
./spec/tasks_spec.rb
./spec/tudu_core_spec.rb
./spec/tudu_dsl_spec.rb
  • spec. で絞り込み
QUERY>
spec.                                                         (1/3)[1/1]
./spec/tasks_spec.rb
./spec/tudu_core_spec.rb
./spec/tudu_dsl_spec.rb
  • Ctrl+Space で必要なファイルを選択します(今回は全て)

  • 3件の絞り込み結果に対して、 wc を実行した結果が表示されます

$ find . -name "*.rb" | percol | wc
      3       3      70

補足

実際にCUIで1文字入力するたびに、結果のフィルタリングがモリモリ動く様子は
percol の GitHub の README にあるアニメーションGIFをご確認ください。
https://github.com/mooz/percol

参照

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5