読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

Grepの「-o」オプションを活用し最後に一致した要素だけ出力する

先日の最後の要素を引っ張り出す事例Grepの魔法を使って書き直すと

$ echo http://s3.amazonaws.com/downloads.basho.com/stanchion/1.5/1.5.0/osx/10.8/stanchion-1.5.0-OSX-x86_64.tar.gz | grep -o '[^\/]*$'

となります。

oオプションは

-o, --only-matching
マッチする行のマッチした部分だけを (それが空文字列でなければ) 表
示します。 マッチした各文字列は、それぞれ別の行に書き出します。

とある通り、一致した部分だけ出力します。
Grepは次の一致条件が来た場合、前に入っていたものを上書きするので
1. 「/」から始まる要素に一致
2. 次の要素が来た場合、前の要素を排除
3. 末尾まで到達した場合、最後に保持していた値を出力
といった塩梅で動作します。

ためしに先ほどの例をオプション抜きでやると

http://s3.amazonaws.com/downloads.basho.com/stanchion/1.5/1.5.0/osx/10.8/stanchion-1.5.0-OSX-x86_64.tar.gz

と全力で全文返してくれます。