この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
ソースコード内の文字列置換(空白スペースの削除)を行う際に、一つ一つvimで開いてやっていたのですが、煩わしくなったので何かいい方法が無いかと調べたところ、sedコマンドが便利でした。
(sedは「stream editor」の略だそうです)
sedコマンドの使い方
直接ファイル名を指定したり、標準出力をパイプで渡すことでテキストの加工を行えます。
# 基本的な使い方
sed [オプション] (ファイル名)
# 以下、使い方の一例
# ファイル名を直接指定して文字列を置換する場合
sed -e 's/hogehoge/bizzbuzz/g' test.text
# パイプで渡して置換する場合
cat test.text | sed -e 's/hogehoge/bizzbuzz/g'
sedコマンドで出来ること
sedコマンドで出来る処理はかなり多いです。
今回は、自分が利用した物について紹介したいと思います。
文字列の置換-sコマンド-
sコマンドを使うと文字列の置換を行うことが出来ます。
sコマンドは、vimと同じような形で記述出来るので、非常に楽です。
またアドレスを利用すると、指定した行のみ置換をするといったことが出来るようになります。
アドレスや置換する文字列には、正規表現を使用出来るので、柔軟な対応を行うことが出来ます。
# sコマンドの使い方
sed '(アドレス) s/(置換前の文字列)/(置換後の文字列)/'
# 使い方の一例
# sample.txt
foo: bar
hoge: huga
bizz: bar
$ sed 's/bar/buzz/' sample.txt
foo: buzz
hoge: huga
bizz: buzz
# bizzの行だけ置換
$ sed '/bizz/' 's/bar/buzz/' sample.txt
foo: bar
hoge: huga
bizz: buzz
行の削除 -dコマンド-
dコマンドでは、アドレスや行番号を指定して行を削除することが出来ます。
#アドレスを指定して行削除
$ sed '/bizz/ d' sample.txt
foo: bar
hoge: huga
# 行番号を指定して削除
$ sed '3 d' sample.txt
foo: bar
hoge: huga
おわりに
sedコマンドでは、今回紹介した2つ以外にも多くのコマンドが実装されているようです。
sedや、その他のコマンドについてもよく理解して、上手く扱えるように精進していきたいと思います。