よく使うLinuxコマンド

sed - テキスト・文字列を操作するコマンド

指定した文字列(文字パターン)がファイル内に存在した場合、置換文字で置換を行なう

■よく使う形(例)

※file.txtファイルの中から、aaaaという文字を見つけ出し、それらをすべてbbbbという文字列に置換する。

# sed -e s/aaaa/bbbb/g file.txt

※httpd.confのコメント部分(行頭が#)を削除して、定義を見やすくする。

# sed /^#/d httpd.conft

※httpd.confの空行部分(なにも書いていない行)を削除して、httpd.confORGファイルに出力する。

# sed /^$/d httpd.conf > httpd.confORG

1042949

指定した文字列(文字パターン)を検索し、合致すれば置換文字列に入れ替える。
grepコマンドとよく似た使い方(正規表現やオプション指定等)ができます。

いろいろ何でもできてしまうsedコマンドですが、正規表現を工夫するとかなり多くのことが1コマンドでできてしまいます。

例えば
「Webのアクセスlogから、アクセスされたページのURLのみ抽出したい」とすると

# sed 's/.*GET \/\(.*\.html\).*/http:\/\/www\.seadigit\.net\/\1/' access_log

と入力することで、日付やステータスなど、必要のない情報を捨てながら、ドメインを付加したアクセスページリストを作ることができます。

[変換前のデータ]
221.95.88.49 - - [23/Jul/2006:15:07:58 +0900] "GET /LINUX/index.html HTTP/1.1" 304 -

[変換後のデータ]
http://www.seadigit.net/LINUX/index.html

区切り文字である「/」や、制御文字の「.」が含まれるため、エスケープ文字「\」で見づらくなっていますが、正規表現がわかるとなんでもありませんよね。

■主なオプション

オプション 機能説明
-n 文字列(または文字列パターン)に合致した行と行番号を表示する。
-v 文字列(または文字列パターン)に合致しない行を表示する。
-i 大文字小文字の区別をしないで検索。
-f ファイルから検索パターンを読み込んで検索する。
※その他、オプションは多数ありますが、専門のコマンドリファレンスやmanコマンド等でご確認下さい。