2026/02/22(日) [n年前の日記]
#2 [ruby] gem listからバージョン情報を除去したい
Ruby の gem を使ってインストールしたパッケージ一覧は gem list で得られる。
ただ、この一覧は、「パッケージ名 (バージョン番号)」という形で出力される。
バージョン情報を除去したい。
以前は Perl を使ってやってたけれど、Ruby でもできそうだよなと…。AI (Google Gemini)に尋ねてみたら色々な書き方を提示されて、「やり方は色々あるんだなあ…」と感心(?)したのでメモ。
パッケージ名とバージョン番号は空白文字で区切られているので、空白文字で分割して最初の要素だけ取り出すのが簡単ですよ、とAIが言っている。なるほどたしかにその通りかも。
gem list
ただ、この一覧は、「パッケージ名 (バージョン番号)」という形で出力される。
> gem list *** LOCAL GEMS *** abbrev (0.1.2) ast (2.4.3) atk (4.3.5) base64 (0.2.0) benchmark (default: 0.4.0) bigdecimal (3.1.8) bundler (default: 4.0.6) cairo (1.18.4) cairo-gobject (4.3.5) ...
バージョン情報を除去したい。
以前は Perl を使ってやってたけれど、Ruby でもできそうだよなと…。AI (Google Gemini)に尋ねてみたら色々な書き方を提示されて、「やり方は色々あるんだなあ…」と感心(?)したのでメモ。
gem list | perl -pe "s/ \(.*\)//"
gem list | ruby -pe '$_.sub!(/\s.*/, "")'
gem list | ruby -ane 'puts $F[0]'
gem list | ruby -ne 'puts $_.split(" ").first'
- -e : 実行するスクリプトの指定
- -p : 標準入力を1行ずつループで読み込んで特殊変数 $_ を出力。
- $_ : 1行分が入ってる特殊変数
- .sub! : 文字列置換。初めにマッチした部分のみ置換する。
- -n : 標準入力を1行ずつ読み込むループ。
- -a : 読み込んだ1行を自動的に分割。区切り文字はスペースやタブ文字。特殊変数 $F に入る。
- puts : 標準出力に出力。
- .split() : 区切り文字で分割。
- .first : 配列の最初の要素だけを返す。[0] と同じ。
パッケージ名とバージョン番号は空白文字で区切られているので、空白文字で分割して最初の要素だけ取り出すのが簡単ですよ、とAIが言っている。なるほどたしかにその通りかも。
[ ツッコむ ]
以上です。