Rubyでワンライナーを書く方法のまとめ

研究とか、いろんなデータ処理していると、ワンライナーをさくっと書きたい場面に出くわすことがあります。 自分は sed や awk にあまり慣れてなく、いちいち man 見ながらちまちま打ち込むよりはいつも使い慣れている Ruby の正規表現でさくっとワンライナーでも書けたら便利ですよね。で、ググったら意外にRubyのワンライナー情報がなくてびっくり。まぁ、Perlもあるしあんまり需要が無いのかも知れませんが。

ということでRubyでワンライナー書くときのまとめ。

ちなみにワンライナー自体についてはここを参照してください。


ワンライナーとは – はてなダイアリー

http://d.hatena.ne.jp/keyword/%A5%EF%A5%F3%A5%E9%A5%A4%A5%CA%A1%BC

使うRubyの実行時オプションは以下の2つです。

-e … このオプションのあとにスクリプト片を与えると、ファイルからスクリプトを読み込むのではなくそれをそのまま実行してくれます。(例えば、ruby -e ‘print “Hello World!¥n”‘ とすると画面にHello World!が表示されます。

-p … このオプション(引数なし)を与えると、プログラム全体が

while gets

print $_
end

で囲まれているかのように動作します。(…には上のスクリプト片が入る)
詳しい説明については以下のリファレンスを参照してください。


Rubyリファレンスマニュアル – Rubyの起動

http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby%A4%CE%B5%AF%C6%B0#a.a5.b3.a5.de.a5.f3.a5.c9.a5.e9.a5.a4.a5.f3.a5.aa.a5.d7.a5.b7.a5.e7.a5.f3

こうすると、例えば

ruby -n -e ‘gsub(/ +/, “¥t”)’

で、ファイル中のスペースの連続をタブに置き換えてくれるワンライナーが書けます。これはデータをExcelに流し込むときに便利。また、

ruby -n -e ‘$_.upcase!’

は、ファイル中のアルファベットをすべて大文字にしてくれるワンライナーになります。

ポイントは、$_から読み込んで$_に出すようなコード片を書くこと。もしくは上のupcase!みたいに破壊的メソッドを使うか。まぁ、このへんはRubyやってる人には朝飯前でしょう。

ちなみに、ワンライナーを非常に頻繁に使いそうなら、シェルの設定で、(zshなら.zshrc, bashなら.bachrcに)

alias -g ROL=’ruby -p -e’

としておくと(ROLはRuby One-Linerの略。別に何でもいい)、上のが

ROL ‘$_.upcase!’

とか書けてとっても幸せです。

おまけ:

ROL ‘sub!(/$/, “www”)’

文末に全部「www」を付けて、人を小馬鹿にしたような文章にするワンライナー。くだらねーwww

This entry was posted in general. Bookmark the permalink.
add to hatena hatena.comment (234) add to del.icio.us (60) add to livedoor.clip (42) add to Yahoo!Bookmark (9) Total: 345

3 Responses to Rubyでワンライナーを書く方法のまとめ

  1. Pingback: Rubyでワンライナーを書く方法のまとめ | 次なるもの

  2. anonymous says:

    ruby -n -e …

    ruby -ne …
    でいいような

  3. Pingback: diigo2ZerockBlog 04/04/2008 « ZerockBlog

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>