Ansatzの備忘録

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

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

問題128 grepの挙動の違いの正体を突き止めろ

PCREのバージョンを出力する問題だった。共有ライブラリとしてPCREが使われていると知らないと解けない問題だったようで、わからないのも当然だった。

解答例は

ldd /bin/grep | awk '/pcre/{print $3}' | xargs dpkg -S | awk -F: '{print $1}' | xargs dpkg -s | awk -F'[:-]' '/Version/{print $3}'

となる。PCREのファイル名を特定した後、OSのパッケージ管理システムを使ってバージョンを特定する方針をとっている。つまり、dpkgでこのファイルを含むパッケージ名を特定して、それからそのパッケージのバージョンを特定している。