Twitterで、ジャンプの短期連載の単行本だけを集めた本棚の写真を見かけたので、こういった短期連載作品群のリストを作れないかなーと思ってちょっと調べてみた。

で、そういったマンガの単行本のDB的なの無いかなー…と思って調べてたところ、文化庁が2015年に『メディア芸術データベース』なるものを出していた。みてる限りまだ開発版であること、2017年6月以降はあまり更新されてなさげなとこが気になるのだが、APIもあるようで十分に遊べそうな印象。せっかくAPIも用意されてるので、ここからデータを引っ張ってみる。

APIについては、以下のような仕様のようだ。

  • jsonで出力され...

awsに接続してssh_configを生成するec2sshというツールがあるのだけど、awsやazコマンドで得たjsonをjqで加工して似たようなことができそうだなと思ったのでやってみた。 awsの場合は、以下のようにaws-cliでec2の情報を取得してjqに渡してやればいい。ユーザ名は取得できないので、必要であればjqの処理のとこに(決め打ちになってしまうが)追記してやればいい。

aws ec2 describe-instances | jq -r '.Reservations[].Instances[]|(.Tags[]|select(.Key == "Name")|.Value...

コンソール上で文字列を融合( パトカータクシー であれば、パタトカクシーー)する処理について、ワンライナーで記述してみたので備忘として残しておく。

echo パトカー タクシー|sed -z 's/ /\n/g;s/\B/ /g'|rs -T|tr -d ' \n'
eval 'paste -d ""' \<\(echo\ {パトカー,タクシー}'|grep -o .)'|tr -d '\n'

一部の処理をjqコマンドでやった場合は以下。 こういった処理の場合だと、jqにはあまり向いてないようだ。 (2個目のやつは@ebanさんのやり方を参考にした。)

...

ふと思いつきでそんな処理を書いてたので、念のため備忘で残しておく。 以下のように、一度readで変数に突っ込んでやって、その後は文字数を元にxargsで1個づつ処理してやればいい。

echo qwerty|(read x;seq 2 $(($(echo $x|wc -c)-1))|xargs -I@ bash -c "echo $x|sed 's/./.&/@'")
$ echo qwerty|(read x;seq 2 $(($(echo $x|wc -c)-1))|xargs -I@ bash -c "echo $x|sed 's/./.&/@'")
q.werty
qw.erty...

先日、CSV版のjqコマンドを目指しているというコマンド『miller』というものを見かけたので、試しに使ってみることにする。
今回はインストール先としてCentOS 7を用いる。

1.インストール

まずはインストール。
以下のコマンドを実行する。

yum install flex
wget https://github.com/johnkerl/miller/releases/download/v4.1.0/mlr-4.1.0.tar.gz
tar xzvf mlr-4.1.0.tar.gz
cd mlr-4.1.0
./configure
make && make in...

jqコマンドで覚えておきたい使い方17個

ここのところ、仕事でJSONをいじる際にjqコマンドで触る事が多くなったので、使ってて便利だと思った使い方についてをまとめてみることにした。

1.読みやすいよう整形する

jqコマンドをただ通すだけで、整形されてないJSONファイルを読みやすいように整形して出力させることができる。

jq . 対象ファイル

[root@BS-PUB-CENT7-02 ~]# cat /tmp/sample0.json
[{"id":"0001","name":"test001","value":112,"group1":{"subg01":[{"id":"1001","type":"type0...

jqコマンドでは、JSONファイルでの集計処理(キーの数を数えたり、合計や平均、最大値や最小値を出したり)をすることが出来る。
なお、今回は以下のようなJSONファイルをサンプルに進めていく。

sample1.json

[
  {
    "id": "0001",
    "name": "test001",
    "value": 112,
    "group1": {
      "subg01": [
        {
          "id": "1001",
          "type": "type001"
        },
        {...

仕事でJSONファイルをいじる事がおおくなり、jqコマンドのお世話になる事が多くなったのだが、そんな中で以下のような状況に出くわしたので備忘として残しておく。
例えば以下のファイルで、キー「id」の値が「test2」の場合のみ、「format」を「log」に書き換えたい場合。

● test.json

[
  {
    "id": "test1",
    "format": "zip",
    "size": 50
  },
  {
    "id": "test2",
    "format": "csv",
    "size": 100
  },
  {
    "id":...

jqコマンドで値の有無(null)を判別させる

最近、仕事でAWSやAzureを利用するようになってから、JSON形式のファイルに触れる事が多くなってきた。
JSON形式のファイルをイジる場合、MacやLinux環境だとjqコマンドというものを用いると楽に整形出来るので良く利用しているのだけど、これで特定の項目がnullの場合(nullじゃない場合)に対象のデータを表示させるような使い方(具体的には、AzureのパブリックIPに対してhostsの自動生成をする際、払いだされてない仮想マシンを除外するため)が必要になったので、その備忘。