sedコマンド

今日の勉強会での学びです。

sedコマンドというものをはじめて知りました。

sedとはStreamingEDiterの略です。
文字列の置換や削除をするコマンドです。

実行例は

test.rbファイルの4行目〜10行目を削除
$ sed -e "4,10d" test.rb

test.rbファイルのtestっていう文字列をhogeに変換
$ sed -e "s/test/hoge/"

といった具合いです。

で、この教わったことを活かして、
ファイル内のある部分を一気にコメントアウトしてみました。

$ cat test.rb
class test
 def hoge
  p test
 end
end

※2〜4行目をコメントアウト実施
$ sed -e "2,4s/^/#/" test.rb
class test
# def hoge
#  p test
# end
end

成功!
ですが、このままだと、標準出力に吐き出されて終わり。
ということでファイルに保存するため、-iオプションを。

$ sed -e "2,4s/^/#/" test.rb -i
$ cat test.rb
class test
# def hoge
#  p test
# end
end

無事うまくできました。

コメントアウトしているものを元に戻すには

$ sed -e "2,4s/^#//" test.rb -i
$ cat test.rb
class test
 def hoge
  p test
 end
end


ちなみに、ファイルへの保存でリダイレクションで実現しようと思ったら失敗・・・

$ sed -e "2,4s/^/#/" test.rb > test.rb
$ cat test.rb
※中身はからっぽに・・・

vimで同じことを実施するには、次のようにすればOKです。

$ vim test.rb

:2,4s/^/#/
2〜4行目がコメントアウト
:wq
保存