CLI操作を快適にする4つのツール peco , remarshal , jq , qq

![job_benriya_nandemoya.png](https://qiita-image-store.s3.amazonaws.com/0/43480/762d26c8-5d24-4399-6d82-155590c604d8.png)

CLI操作でありがちなめんどくさい操作を簡単にしてくれるツール群をまとめて紹介します。
それぞれ既出なので、タイトルを読んで全部知っている方は特に得るものはない記事です。

## <i class='fa fa-search'></i> peco
![search_mushimegane.png](https://qiita-image-store.s3.amazonaws.com/0/43480/c27d7297-4934-ee1a-9e8f-0419db128af3.png)

https://github.com/peco/peco

インタラクティブなフィルタリングツールです。
CLIの出力結果を素早く選択する際に便利です。

### <i class='fa fa-flask'></i> 例：多数のディレクトリから素早く対象を選んで移動する

```bash
alias pcd='cd $(find . -maxdepth 1 -type d | peco)'
```

![pcd.gif](https://qiita-image-store.s3.amazonaws.com/0/43480/7e8a32dd-d8ad-690f-c866-0cf5f01d3837.gif)

## <i class='fa fa-wrench'></i> jq
![monkey_wrench.png](https://qiita-image-store.s3.amazonaws.com/0/43480/cf0dd0d5-79ba-c9e2-a5f5-5e3c60be74e6.png)

https://github.com/stedolan/jq

JSONから値を取得、整形、集計を簡単に行うことができるツール。

### <i class='fa fa-flask'></i> 例：Livedoorのお天気APIから東京のロケーション情報を取得する
```bash
$ curl -s http://weather.livedoor.com/forecast/webservice/json/v1\?city\=130010 | jq '.location'
{
  "city": "東京",
  "area": "関東",
  "prefecture": "東京都"
}
```

## <i class='fa fa-database'></i> qq
![computer_server.png](https://qiita-image-store.s3.amazonaws.com/0/43480/8a5100bf-ab2b-5330-69f6-b03a222a73dc.png)

https://github.com/mattn/qq

CSV, TSVファイル等を標準入力から受け取りSQLでフィルタできるツール。

### <i class='fa fa-flask'></i> 例：都道府県CSVをフィルタする
* 元データは以下から取得

https://fusiontables.google.com/DataSource?snapid=S557390H1zy

```bash
$ cat prefecture.csv                  ⮂
No,都道府県名,市区名,緯度,経度,New Column
1,北海道,札幌市,43.0646147,141.3468074,
2,青森県,青森市,40.8243077,140.7399984,
3,岩手県,盛岡市,39.7036194,141.1526839,
4,宮城県,仙台市,38.2688373,140.8721,
5,秋田県,秋田市,39.7186135,140.1023643,
6,山形県,山形市,38.2404355,140.3636333,
7,福島県,福島市,37.7502986,140.4675514,
8,茨城県,水戸市,36.3418112,140.4467935,
9,栃木県,宇都宮市,36.565725,139.8835651,
10,群馬県,前橋市,36.3906675,139.0604061,
11,埼玉県,さいたま市,35.8569991,139.6488487,
12,千葉県,千葉市,35.6050574,140.1233063,
13,東京都,新宿区,35.6894875,139.6917064,
14,神奈川県,横浜市,35.4475073,139.6423446,
15,新潟県,新潟市,37.9025518,139.0230946,
16,富山県,富山市,36.6952907,137.2113383,
17,石川県,金沢市,36.5946816,136.6255726,
18,福井県,福井市,36.0651779,136.2215269,
19,山梨県,甲府市,35.6641575,138.5684486,
20,長野県,長野市,36.6512986,138.1809557,
21,岐阜県,岐阜市,35.3912272,136.7222906,
22,静岡県,静岡市,34.9771201,138.3830845,
23,愛知県,名古屋市,35.1801883,136.9065647,
24,三重県,津市,34.7302829,136.5085883,
25,滋賀県,大津市,35.0045306,135.8685899,
26,京都府,京都市,35.0212466,135.7555968,
27,大阪府,大阪市,34.6862971,135.5196609,
28,兵庫県,神戸市,34.6912688,135.1830706,
29,奈良県,奈良市,34.6853345,135.8327421,
30,和歌山県,和歌山市,34.2259867,135.1675086,
31,鳥取県,鳥取市,35.5038906,134.2377356,
32,島根県,松江市,35.4722952,133.0504997,
33,岡山県,岡山市,34.6617511,133.9344057,
34,広島県,広島市,34.3965603,132.4596225,
35,山口県,山口市,34.1859563,131.4706493,
36,徳島県,徳島市,34.0657179,134.5593601,
37,香川県,高松市,34.3401491,134.0434436,
38,愛媛県,松山市,33.8416238,132.7656808,
39,高知県,高知市,33.5597062,133.5310786,
40,福岡県,福岡市,33.6065756,130.418297,
41,佐賀県,佐賀市,33.2494416,130.2997942,
42,長崎県,長崎市,32.7448388,129.8737562,
43,熊本県,熊本市,32.789827,130.7416672,
44,大分県,大分市,33.2381718,131.6126189,
45,宮崎県,宮崎市,31.9110956,131.4238934,
46,鹿児島県,鹿児島市,31.5610825,130.5577279,
```

* フィルタを実行

緯度が35より大きい都道府県名, 緯度, 経度を表示する

```bash
$ cat prefecture.csv | qq -ic -q "select 都道府県名,緯度,経度 from stdin where 緯度 > 35"
北海道,43.0646147,141.3468074
青森県,40.8243077,140.7399984
岩手県,39.7036194,141.1526839
宮城県,38.2688373,140.8721
秋田県,39.7186135,140.1023643
山形県,38.2404355,140.3636333
福島県,37.7502986,140.4675514
茨城県,36.3418112,140.4467935
栃木県,36.565725,139.8835651
群馬県,36.3906675,139.0604061
埼玉県,35.8569991,139.6488487
千葉県,35.6050574,140.1233063
東京都,35.6894875,139.6917064
神奈川県,35.4475073,139.6423446
新潟県,37.9025518,139.0230946
富山県,36.6952907,137.2113383
石川県,36.5946816,136.6255726
福井県,36.0651779,136.2215269
山梨県,35.6641575,138.5684486
長野県,36.6512986,138.1809557
岐阜県,35.3912272,136.7222906
愛知県,35.1801883,136.9065647
滋賀県,35.0045306,135.8685899
京都府,35.0212466,135.7555968
鳥取県,35.5038906,134.2377356
島根県,35.4722952,133.0504997
```

## <i class='fa fa-files-o'></i> remarshal
![makeup_henshin.png](https://qiita-image-store.s3.amazonaws.com/0/43480/4e6dad6d-1ba0-9dfd-45b9-cb0428abee5b.png)

https://github.com/dbohdan/remarshal

TOML, YAML, JSONの相互変換を行う。

jqの例を参照