Ruby one-liner

自分なりの書き方まとめ。

  • エイリアスを設定。 alias rol='ruby -n -e' または alias rol='ruby -p -e'。
    • 前者は、入力を処理した結果を出力しない。後者は、出力する。各オプションの正確な意味はリファレンスを参照。
  • rol '(Rubyコード)' filename とすると、 filename 中のテキストが一行ずつ$_ に格納され、Rubyコードがそれを処理していく。


例えば、次のようにone-linerを実行できる。

$ alias rol='ruby -p -e'
$ cat myfile
def strlen-comp(str, len)
  if str.length == len
    return true
  else
    return false
  end
end

$ rol '$_.sub!(/len/, "xyz")' myfile   # myfile の各行の最初の"len"を"xyz"に変換して標準出力に表示
def strxyz-comp(str, len)
  if str.xyzgth == len
    return true
  else
    return false
  end
end