sedのメモページ

sedはテキストの処理が得意。
sedの本名は"Stream Editor"だと聞いた。ぽいけど本当なのかな。
http://www.ibm.com/developerworks/jp/linux/library/l-sed2/
などもキチンと読むこと。

文字の置換

hogeをhomuに変えたいときは、

sed "s/hoge/homu/" file.txt

とする。ただ、このままだと、「各行ごとの、最初のhoge『だけ』をhomuに置換する(つまり、後ろにhogeがあっても無視される)」となってしまうので、/の後ろにgをつけて、

sed "s/hoge/homu/g" file.txt

としておくと安心。置換の条件を加えることもできて、例えば1-3行目のみ、置換を加えたいときは、

sed "1,3s/hoge/homu/g" file.txt

などと書くこともできる。

行の削除

ファイルの特定の行のみ削除したいときも、sedは便利。1-3行目のみを削除したい場合は、

sed "1,3d" file.txt

とすればよい。

条件に合致するものに対して、文字を追加

例えば、今、irasなんとか、という天体名が合致したときに、
"Homuhomu said:"というのを加えたかったら、
sed "s/iras.*/Homuhomu said: &/g"
などのように、マッチングした文字列は、&というので表現が可能である。

条件に合致したものを記憶したい

sedではグルーピング機能がある。例えば、任意の文字列を表現するには".*"とすればよいが、それを記憶させて、後で使い時は、"\(.*\)"とカッコで囲えばよい。具体例として、sedを用いて、1列目と2列目を入れ替えてみる。

sed -e "s/\(.*\) \(.*\)/\2 \1/g"

となる。\1や\2は、グルーピングされたものを現しており、数字は、グルーピングされたもののうち、左側からふられる番号である。
最終更新:2012年02月11日 04:33