Submit Search
Upload
jqで極めるシェル芸の話
•
1 like
•
1,957 views
Yoichi Toyota
Follow
JSONを整形するコマンドだと思われがちなjqコマンド、実はかなり高性能で、これを使いこなせるとシェル芸が捗ります!
Read less
Read more
Software
Report
Share
Report
Share
1 of 16
Download now
Download to read offline
Recommended
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
20211109 JAWS-UG SRE keynotes
20211109 JAWS-UG SRE keynotes
Amazon Web Services Japan
20190731 Black Belt Online Seminar Amazon ECS Deep Dive
20190731 Black Belt Online Seminar Amazon ECS Deep Dive
Amazon Web Services Japan
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
Amazon Web Services Japan
KafkaとAWS Kinesisの比較
KafkaとAWS Kinesisの比較
Yoshiyasu SAEKI
20190402 AWS Black Belt Online Seminar Let's Dive Deep into AWS Lambda Part1 ...
20190402 AWS Black Belt Online Seminar Let's Dive Deep into AWS Lambda Part1 ...
Amazon Web Services Japan
Recommended
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
20211109 JAWS-UG SRE keynotes
20211109 JAWS-UG SRE keynotes
Amazon Web Services Japan
20190731 Black Belt Online Seminar Amazon ECS Deep Dive
20190731 Black Belt Online Seminar Amazon ECS Deep Dive
Amazon Web Services Japan
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
Amazon Web Services Japan
KafkaとAWS Kinesisの比較
KafkaとAWS Kinesisの比較
Yoshiyasu SAEKI
20190402 AWS Black Belt Online Seminar Let's Dive Deep into AWS Lambda Part1 ...
20190402 AWS Black Belt Online Seminar Let's Dive Deep into AWS Lambda Part1 ...
Amazon Web Services Japan
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormation
Amazon Web Services Japan
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
20210126 AWS Black Belt Online Seminar AWS CodeDeploy
20210126 AWS Black Belt Online Seminar AWS CodeDeploy
Amazon Web Services Japan
Tune Up AWS Lambda
Tune Up AWS Lambda
Keisuke Nishitani
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Sotaro Kimura
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
gree_tech
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
Amazon Web Services Japan
AWSではじめるMLOps
AWSではじめるMLOps
MariOhbuchi
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Atsushi Tanaka
Amazon Kinesis Video Streams WebRTC 使ってみた
Amazon Kinesis Video Streams WebRTC 使ってみた
mganeko
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
Yahoo!デベロッパーネットワーク
知っているようで知らないPAMのお話
知っているようで知らないPAMのお話
Serverworks Co.,Ltd.
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
Preferred Networks
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
infinite_loop
NGINXでの認可について考える
NGINXでの認可について考える
Hitachi, Ltd. OSS Solution Center.
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Preferred Networks
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
Satoyuki Tsukano
Unit testing JavaScript with JUnit/JavaFX
Unit testing JavaScript with JUnit/JavaFX
Shinya Mochida
Ajax 応用
Ajax 応用
Katsuyuki Seino
More Related Content
What's hot
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormation
Amazon Web Services Japan
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
20210126 AWS Black Belt Online Seminar AWS CodeDeploy
20210126 AWS Black Belt Online Seminar AWS CodeDeploy
Amazon Web Services Japan
Tune Up AWS Lambda
Tune Up AWS Lambda
Keisuke Nishitani
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Sotaro Kimura
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
gree_tech
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
Amazon Web Services Japan
AWSではじめるMLOps
AWSではじめるMLOps
MariOhbuchi
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Atsushi Tanaka
Amazon Kinesis Video Streams WebRTC 使ってみた
Amazon Kinesis Video Streams WebRTC 使ってみた
mganeko
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
Yahoo!デベロッパーネットワーク
知っているようで知らないPAMのお話
知っているようで知らないPAMのお話
Serverworks Co.,Ltd.
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
Preferred Networks
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
infinite_loop
NGINXでの認可について考える
NGINXでの認可について考える
Hitachi, Ltd. OSS Solution Center.
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Preferred Networks
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
Satoyuki Tsukano
What's hot
(20)
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormation
DockerコンテナでGitを使う
DockerコンテナでGitを使う
20210126 AWS Black Belt Online Seminar AWS CodeDeploy
20210126 AWS Black Belt Online Seminar AWS CodeDeploy
Tune Up AWS Lambda
Tune Up AWS Lambda
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Kinesis Analyticsの適用できない用途と、Kinesis Firehoseの苦労話
Docker Tokyo
Docker Tokyo
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
AWSではじめるMLOps
AWSではじめるMLOps
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Zabbix最新情報 ~Zabbix 6.0に向けて~ @OSC2021 Online/Fall
Amazon Kinesis Video Streams WebRTC 使ってみた
Amazon Kinesis Video Streams WebRTC 使ってみた
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
オンプレML基盤on Kubernetes 〜Yahoo! JAPAN AIPF〜
知っているようで知らないPAMのお話
知っているようで知らないPAMのお話
Kubernetesによる機械学習基盤への挑戦
Kubernetesによる機械学習基盤への挑戦
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
NGINXでの認可について考える
NGINXでの認可について考える
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
Similar to jqで極めるシェル芸の話
Unit testing JavaScript with JUnit/JavaFX
Unit testing JavaScript with JUnit/JavaFX
Shinya Mochida
Ajax 応用
Ajax 応用
Katsuyuki Seino
Java EE8 Report
Java EE8 Report
Norito Agetsuma
探検!SwiftyJSON
探検!SwiftyJSON
Yuka Ezura
APIKit
APIKit
Kosuke Matsuda
Sansan様 登壇資料
Sansan様 登壇資料
Daisuke Nagata
ATN No.2 Scala事始め
ATN No.2 Scala事始め
AdvancedTechNight
20110714 j queryベーシック
20110714 j queryベーシック
良太 増子
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
Kohei Asai
明日から使える Java SE 7
明日から使える Java SE 7
Yuichi Sakuraba
MlnagoyaRx
MlnagoyaRx
Shoichi Kakamu
ASP.NETを利用したAJAX開発の応用
ASP.NETを利用したAJAX開発の応用
Sho Okada
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
Minero Aoki
Functional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.js
Shogo Sensui
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情
takezoe
公式page改ざんで学ぶjQuery入門 (jscafe7)
公式page改ざんで学ぶjQuery入門 (jscafe7)
Ryuma Tsukano
Spring2概論@第1回JSUG勉強会
Spring2概論@第1回JSUG勉強会
Mitsuhiro Okamoto
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Toshiyuki Ienaga
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
yoshiaki iwanaga
Osc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-database
Toshi Harada
Similar to jqで極めるシェル芸の話
(20)
Unit testing JavaScript with JUnit/JavaFX
Unit testing JavaScript with JUnit/JavaFX
Ajax 応用
Ajax 応用
Java EE8 Report
Java EE8 Report
探検!SwiftyJSON
探検!SwiftyJSON
APIKit
APIKit
Sansan様 登壇資料
Sansan様 登壇資料
ATN No.2 Scala事始め
ATN No.2 Scala事始め
20110714 j queryベーシック
20110714 j queryベーシック
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
コンポーネント指向による、Reactのベストプラクティスとバッドプラクティス
明日から使える Java SE 7
明日から使える Java SE 7
MlnagoyaRx
MlnagoyaRx
ASP.NETを利用したAJAX開発の応用
ASP.NETを利用したAJAX開発の応用
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
Functional JavaScript with Lo-Dash.js
Functional JavaScript with Lo-Dash.js
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情
公式page改ざんで学ぶjQuery入門 (jscafe7)
公式page改ざんで学ぶjQuery入門 (jscafe7)
Spring2概論@第1回JSUG勉強会
Spring2概論@第1回JSUG勉強会
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
Osc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-database
More from Yoichi Toyota
超フランクにスクラムの大事なことの話をする
超フランクにスクラムの大事なことの話をする
Yoichi Toyota
ジャワカレーをおいしく作る最後の一押し
ジャワカレーをおいしく作る最後の一押し
Yoichi Toyota
ライブラリを作る思考回路
ライブラリを作る思考回路
Yoichi Toyota
DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技
Yoichi Toyota
はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計
Yoichi Toyota
オブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないこと
Yoichi Toyota
Ruby is comming ractor編
Ruby is comming ractor編
Yoichi Toyota
array.map(&:key)ってなんやねん
array.map(&:key)ってなんやねん
Yoichi Toyota
はじめてのPull Request
はじめてのPull Request
Yoichi Toyota
Railsの開発環境作るぞ
Railsの開発環境作るぞ
Yoichi Toyota
足し算をつくろう
足し算をつくろう
Yoichi Toyota
React Hooksでカスタムフックをつくろう
React Hooksでカスタムフックをつくろう
Yoichi Toyota
ActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのか
Yoichi Toyota
サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方
Yoichi Toyota
SPA時代のOGPとの戦い方
SPA時代のOGPとの戦い方
Yoichi Toyota
AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活
Yoichi Toyota
Docker in production
Docker in production
Yoichi Toyota
How to fight against “full scratch disease”
How to fight against “full scratch disease”
Yoichi Toyota
Amazon lexを触ってみた
Amazon lexを触ってみた
Yoichi Toyota
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Yoichi Toyota
More from Yoichi Toyota
(20)
超フランクにスクラムの大事なことの話をする
超フランクにスクラムの大事なことの話をする
ジャワカレーをおいしく作る最後の一押し
ジャワカレーをおいしく作る最後の一押し
ライブラリを作る思考回路
ライブラリを作る思考回路
DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技
はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計
オブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないこと
Ruby is comming ractor編
Ruby is comming ractor編
array.map(&:key)ってなんやねん
array.map(&:key)ってなんやねん
はじめてのPull Request
はじめてのPull Request
Railsの開発環境作るぞ
Railsの開発環境作るぞ
足し算をつくろう
足し算をつくろう
React Hooksでカスタムフックをつくろう
React Hooksでカスタムフックをつくろう
ActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのか
サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方
SPA時代のOGPとの戦い方
SPA時代のOGPとの戦い方
AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活
Docker in production
Docker in production
How to fight against “full scratch disease”
How to fight against “full scratch disease”
Amazon lexを触ってみた
Amazon lexを触ってみた
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
jqで極めるシェル芸の話
1.
jqで極めるシェル芸の話 株式会社エクストーン 豊田陽一
2.
今日のお話 ▰ jqコマンド ▰ 整形 ▰
列挙 ▰ フィルタ ▰ 集計
3.
JSON ▰ JavaScript Object
Notation ▰ JavaScriptのオブジェクトと互換のあるデータ フォーマット ▰ 別にJSでなくても使える ▰ APIのリクエスト・レスポンス ▰ ログ ▰ 設定ファイル ▰ etc.
4.
jq ▰ JSONを整形するコマンド ▰ だと思っていませんか? ▰
実は結構いろんなことが出来る子
5.
整形 ▰ jq . ▰
何となく手癖で打ってる感のあるコマンド ▰ . ってなんだろうね $ cat 1.json | jq . { "name": "Yoichi TOYOTA", "email": "wisteria.r.s@gmail.com" }
6.
抽出 ▰ 属性名や []
を指定する ▰ []を渡すと配列全件取得可能 ▰ .sns[0] の部分をフィルタと呼ぶ $ cat 2.json | jq . sns[0] { "type": "twitter", "username": "@rs_wisteria" }
7.
パイプ ▰ | で前のフィルタの結果を次のフィルタ に入力として渡せる $
cat 2.json | jq ‘.sns[] | .type’ “twitter” “facebook”
8.
パイプ(2) ▰ パイプと{}, []を利用し、JSONの再構築 も可能 $
cat 2.json | jq '. | { name, email, sns: [ .sns[].username ] }' { "name": "Yoichi TOYOTA", "email": "wisteria.r.s@gmail.com", "sns": [ "@rs_wisteria", "yoichi.toyota.9" ] }
9.
type, length, keys ▰
パイプで受け取ったオブジェクトの型・ 長さ・キー一覧を取得可能 $ cat 1.json | jq '. | { name, email, sns: [ .sns[].username ], sns_count: (.sns|length) }' { "name": "Yoichi TOYOTA", "email": "wisteria.r.s@gmail.com", "sns": [ "@rs_wisteria", "yoichi.toyota.9" ], "sns_count": 2 }
10.
フォーマット変換 ▰ @csv, @tsv等でフォーマット変換が可 能 ▰
-rにより””を除去 ▰ 下記の””はCSVフォーマットして付与されたもの $ cat 2.json | jq '.sns[] | [ .type, .username ] | @csv' -r "twitter","@rs_wisteria" "facebook","yoichi.toyota.9"
11.
他にもできること ▰ map ▰ reduce ▰
from_entry ▰ add ▰ etc.
12.
シェル芸の時間だ! ▰ ひゃっはー
13.
GitHub API ▰ https://api.github.com/users/< ユーザー名> ▰
githubユーザーに関する情報が取得可能 ▰ 関連情報を取得できるURL等 ▰ 所有リポジトリ ▰ 所属組織 ▰ フォロワー一覧 ▰ etc.
14.
GitHub API (2) ▰
特定ユーザーの所有するリポジトリを 全部cloneしたい! ▰ /api/users/<ユーザー名> ▰ repos_url: リポジトリ取得APIのURL ▰ リポジトリ取得API ▰ clone_url: クローン用のURL
15.
GitHub API (3) ▰
jqの結果を別のコマンドに渡す ▰ repos_urlを取得を取得し、curlに渡す ▰ clone_url一覧を取得し、xargsに渡す ▰ xargsにより、各URLをgit cloneに渡す curl `curl -s https://api.github.com/users/rswisteria | jq .repos_url -r` | jq '.[].clone_url' -r | xargs -I {} git clone {}
16.
おわりに ▰ jq便利 ▰ 整形だけじゃない ▰
新しいJSONも作れる ▰ なんならJSON以外も作れる ▰ TSV, CSV他 ▰ 整形してシェルの引数にしよう ▰ パイプでつなげば何でもできる ▰ xargsがあれば何でもできる
Download now