sedコマンド
システム管理者 Unixパワーユーザのためのコマンドリファレンス

[ Linux / Unix リファレンスガイド ] ⇒ [ コマンドリファレンス ] ⇒ [ sedコマンド ]



sed

テキストファイル・文字列の編集(追加・置換・削除)などを行うストリームエディタ。awkなどと組み合わせるとさまざまな文字列処理を簡単に行うことが可能。sedとawkを一通り学べばUnixのコマンドラインにおける操作やスクリプト開発が格段に向上する。 また、正規表現を組み合わせると強力なオペレーションを行うことが可能。sedについては一冊本がかけるくらい高機能なので、ここでは基本的な使い方のみを記述する。

オプション
e 条件式に従って文字列処理(置換・削除など)を行う
f テキストファイルに記述された条件式に従って文字列処理(置換・削除など)を行う
i [★重要] ファイルを直接編集して上書き保存。元ファイルのバックアップ取得も可能。
   


コマンド
i 次の行(上の行)に文字を挿入
a 前の行(下の行)に文字を挿入
d 削除する


追加

◆このファイル data1 に文字列を追加する。
$ cat data1
0000
0001
0002
0003
0004


◆ i ⇒ 該当する行の前に追加
0で終わる行の上に#Commentの文字列を追加

$ sed -e /0$/i\#Comment data1
#Comment
0000
0001
0002
0003
0004
0005

◆ a ⇒ 該当する行の次に追加
$
sed -e /3$/a\xyz data1
0000
0001
0002
0003
xyz
0004
0005


# sed -e /[1-3]/axyz data1
0000
0001
xyz
0002
xyz
0003
xyz
0004
0005



削除


◆次のテキストファイルを
# cat text.txt
DAT0000000

DAT0000001

◆空行削除(空白も非表示文字もない改行コードのみの連続部を削除)
# sed -ie '/^$/d' text.txt
DAT0000000
DAT0000001

◆文字列DATを削除(DATを文字数0の空の文字列に変換)
# cat text.txt | sed -e 's/DAT//g'
00000000
00000001

◆余分なTABを削除したい
$ cat memo.txt | sed -e 's/\t//g'

注意点 sedのバージョンによっては[TAB]などいくつかの制御文字の置き換えがうまく行かない場合がある。そのような場合はperlのワンライナーで代用すると良い。

$ cat memo.txt | perl -pe 's/\t//g'



置換


◆テキストファイルの文字列置換(FreeBSD → Linux)
# cat sample.txt
このテキストは FreeBSD の構築メモです。

# sed -e "s/FreeBSD/Linux/g" sample.txt    (標準出力でコマンドの結果を確認)
このテキストは Linux の構築メモです。

# sed -i -e "s/FreeBSD/Linux/g" sample.txt   (sample.txtを編集して保存する)

# cat sample.txt
このテキストは Linux の構築メモです。


◆次のテキストファイルを
# cat text.txt
DATA0000000

DATA0000001

◆DATAをDTに置換
# cat text.txt | sed -e 's/DATA/DT/g'
DT00000000
DT00000001

以上






(c) 2012 - 2015 copyright oskp.net all rights reserved.