ホーム DoRuby sedコマンドでテキストの加工
sedコマンドでテキストの加工
 

sedコマンドでテキストの加工

この記事はアピリッツの技術ブログ「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や、その他のコマンドについてもよく理解して、上手く扱えるように精進していきたいと思います。

記事を共有

最近人気な記事