【問題のみ】第17回ジュンク堂はシェル芸が乗っ取った勉強会

Pocket
LINEで送る

ルール

  • ワンライナーで出されたお題を解きます。
  • 汎用的な解を考えるのは出された問題をとりあえず解いてから。
  • 特にどの環境とは指定しないので各自環境に合わせて読み替えを。ただし今回、AWKだけはGNU Awk 4.0.1を使っていると明記しておきます。
  • 今回のテーマはAWKですが、何で解いても構いません。別にPowerShellだろうがRubyだろうが構いません。ワンライナーじゃないけどエクセル方眼紙でも。

環境

今回はLinuxで解答例を作りましたので、BSDやMacな方は以下の表をご参考に・・・。

Mac,BSD系 Linux
gdate date
gsed sed
tail -r tac
gtr tr
gfold fold

Q1

次のようなデータを

$ cat data1
a 1
b 4
a 2
a 3
b 5

次のように変換してみましょう。

a 1 2 3
b 4 5

余力のある人は次のようなJSON形式にしてみましょう。

{a:[1,2,3],b:[4,5]}

Q2

以下の数字のファイルから同じレコード(行)があるかないかを調べ、ある場合には何行目と何行目にあるのか出力しましょう。

$ cat data
0.5937836043 0.4644710001
0.3637036697 0.5593602512
0.5655269331 0.6793148112
0.7804610574 0.2905477797
0.3637036697 0.5593602512

Q3

次のJSONのデータについて、aに対応づけられた配列内の数字の合計とbに対応づけられた配列内の数字の合計を求めましょう。

$ cat data
{"a":[1,2,3],"b":[4,5]}

Q4

次のようなIPv6アドレスをechoした後にパイプでコマンドをつなぎ、「::」で省略されているセクションに0を補ってください。

$ echo 2001:db8::9abc

ただし、同じワンライナーが

::1

でも使えるようにしてください。

Pocket
LINEで送る