バイドゥ(百度)株式会社で働くR&Dエンジニアとして、世界一楽しい検索エンジンを作っています。情報系大学院生が、腕一本で「世界で一番アツい会社」に就職するまで&してからの記録。
29 11月
研究とか、いろんなデータ処理していると、ワンライナーをさくっと書きたい場面に出くわすことがあります。 自分は 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 -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
3 Responses for "Rubyでワンライナーを書く方法のまとめ"
[…] Rubyでワンライナーを書く方法のまとめTopic: 未分類| 研究とか、いろんなデータ処理していると、ワンライナーをさくっと書きたい場面に出くわすことがあります。 自分は sed や awk にあまり慣れてなく、いちいち man 見ながらちまちま打ち込むよりはいつも使い慣れている Ruby の正規表現でさくっとワンライナーでも書けたら便利ですよね。で、ググったら意外にRubyのワンライナー情報がなくてびっくり。まぁ、Perlもあるしあんま… original article […]
ruby -n -e …
は
ruby -ne …
でいいような
[…] Rubyでワンライナーを書く方法のまとめ […]
Leave a reply