😄

`jq`コマンドをうまく駆使して条件に該当する件数を取得したい

2022/01/20に公開

(この記事は将来的に本に移行します。)

結論

(JSONを出力するコマンド) | jq -c '.(表示内容。省略可)|select(.表示条件)' | wc -l

解説

  • jq -cでJSONを1件を1行ずつ取得できます。
  • jqのオプションは検索条件です。SQLでいうところのクエリのイメージで書けます。数えるだけならなくてもいいです
  • wc -lで行数を取得できます。検索条件を指定するだけならなくてもいいです

※ ターミナルの横幅によっては複数行で表示されますが、wcコマンドで見たら1行として処理されるため、問題ありません。

実践例

https://github.com/shimajima-eiji/__Backup_Translate/blob/main/.github/workflows/translate.yml#L24

この例では、Github Actionsを使ってPythonで生成したJSONをテキストファイルに書いて、次のステップで結果を受け取って判断するロジックを書いています。
ここでやっていることは、Githubに翻訳したい単語を書いたら_enという名前をつけて翻訳したファイルを表示させることです。

これを動かすとこうなります。

https://github.com/shimajima-eiji/__Backup_Translate

発端

いつも翻訳サイトなりアプリなりを起動しているのですが、いつも似たような言葉を調べているような気がするので、今まで翻訳してきた単語や文章を記録に残すのと、GASの翻訳機能(LanguageAPI)とPythonの翻訳機能(GoogleTrans)を比較することでした。
何でもそうなんですが、とりあえず環境構築でhello worldするだけでは気付かない発見が色々あって非常に勉強になりました。
(といっても、これらの作業は過去にやっているハズなので結構忘れているものがあった事に愕然とします)

発展

ZennをGithub連携しているので、日本語で記事を書いたら英語に翻訳して自動投稿してくれる仕組みがこれで整いました。
個人サイトならGoogleTranslaterとかを仕込むんですが、Zennではそういうワケにもいかないので、こういった運用対処は必要になると思います。

その気になれば、英語以外でもできます。

GitHubで編集を提案

Discussion