Ansatzの備忘録

勉強したことあるいはふと思い立ったこと

シェルワンライナー160本ノック問題43

問題43 文献リストのソート

問題のファイルは

https://github.com/shellgei/shellgei160

からダウンロードできる。

順番が入り乱れている文献リストをソートする問題だった。ソートすると言ってもリストが

[4] トップページ | gihyo.jp, 技術評論社
https://gihyo.jp/

[3] シェル芸 | 上田ブログ
https://b.ueda.tech/?page=01434

[2] くんすとの備忘録
https://kunst1080.hatenablog.com/

[1] 日々之迷歩
https://papiro.hatenablog.jp/

[5] 俺的備忘録
https://orebibou.com/

のようになっているので単純にはソートできない。先頭に目印をつけることでうまく解決していた。

解答例は

cat bunken.txt | awk 'NR%3==1{k=$1};{print k,$0}' | sort -s -k1,1 | sed 's/....//'

となる。NRはこれまでに読み込んだ行の数を表す。3行ごとに数字が来ているのでこうして指定している。対応するアクションでは先頭の数字を読み込んで次のアクションで付け加えている。あとはソートして目印を sed で除去すれば完成する。