【実例付】sedコマンドとは?sedコマンドの使い方やを丁寧に解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年4月)

✔このような方へ向けて書かれた記事となります

「sedコマンドって何?」

「sedコマンドでできることを詳しく知りたい」

「sedコマンドの実例を教えて」

✔当記事を通じてお伝えすること

  • sedコマンドの基本
  • sedコマンドのオプションや使い方
  • sedコマンドの実例

当記事では、sedコマンドについて、その基本はもちろん、オプションや使い方まで丁寧に解説していきます。

ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間17万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

sedコマンドの基礎知識3選

sedコマンドの基礎知識をご覧ください。

後述されている使い方などを理解する際にも、役立ちます

  • sedコマンドとは
  • sedコマンドの利点
  • なぜsedコマンドを学ぶべきか?

sedコマンドとは

sedコマンドは、UNIXおよびLinux環境で使用される、ストリームエディタ(Stream EDitor)の略称で、テキストファイルを編集するために使われます

特に大量のデータや複数のファイルを処理する際に効率的に作業ができます。

sedコマンドの利点

sedコマンドは以下のような利点があります。

  • 大規模なテキストファイルも高速に処理できる
  • 置換、削除、挿入などの様々なテキスト編集操作が可能
  • 正規表現を用いた複雑な検索や置換が可能
  • スクリプトを使って自動化しやすい

なぜsedコマンドを学ぶべきか?

sedコマンドを学ぶことで、効率的にテキストデータを処理できるようになります。

また、ログファイルの解析やデータ整形などの作業が容易になり、より高度なテキスト処理スキルを身につけられるのです。

sedコマンドのインストールと環境設定

sedコマンドのインストールと環境設定をご覧ください。

まずは準備を整えましょう。

  • インストール方法
  • 環境設定と初期設定

インストール方法

LinuxやMac OSでは、通常は既にインストールされています。

Windowsユーザーは、Windows Subsystem for Linux (WSL) をインストールして使用できます。

WSLとは、無料でインストールできるWindows内でLinuxを使える環境のこと。

環境設定と初期設定

特別な環境設定や初期設定は不要です。

ただし、sedコマンドが正常に動作するか確認するために、以下のコマンドを実行してみましょう。

$ echo "Hello, World!" | sed 's/World/Everyone/'
Hello, Everyone!

このとおり “Hello, Everyone!” と出力されれば、正常に動作しています。

sedコマンドの書き方

sedコマンドの書き方を見ていきましょう。

基本的な書き方と主なオプションを紹介します。

  • 基本的な構文の解説
  • 命令の書き方
  • オプションの一覧

基本的な構文の解説

sedコマンドの基本構文は以下の通りです。

sed [オプション] ‘命令’ [入力ファイル]

命令には、置換、削除、挿入などの編集操作を指定します。

入力ファイルが指定されない場合、標準入力から読み込みます。

命令の書き方

命令について、以下の表にまとめました。

参考にして、必要な命令を書けるようになりましょう。

説明構文
文字列の置換s/検索パターン/置換パターン/[フラグ]
行の削除/検索パターン/d
行の挿入/検索パターン/i\挿入テキスト
行の追加/検索パターン/a\追加テキスト
行の変更/検索パターン/c\変更テキスト
行のプリント/検索パターン/p
行のプリント抑制/検索パターン/n
行のプリント・次行読込/検索パターン/N
ホールドバッファへのコピー/検索パターン/h
ホールドバッファへの追加/検索パターン/H
ホールドバッファの内容を
パターンスペースにコピー
/検索パターン/g
ホールドバッファの内容を
パターンスペースに追加
/検索パターン/G
パターンスペースの内容を
ホールドバッファに交換
/検索パターン/x
パターンスペースの内容を
削除して次行読込
/検索パターン/D
ブランチ/検索パターン/b[ラベル]
テストとブランチ/検索パターン/t[ラベル]
ラベル:ラベル
次のコマンドにスキップ#
行の表示(制御文字を可視化)/検索パターン/l
パターンスペースの内容を
削除して終了
/検索パターン/q

オプションの一覧

オプション名説明
-e複数のスクリプトを指定する場合に使用sed -e ‘s/foo/bar/’ -e ‘s/baz/qux/’
-fスクリプトファイルを指定して実行sed -f script.sed input.txt
-i編集結果を直接ファイルに上書きsed -i ‘s/foo/bar/’ input.txt
-I拡張子を指定して、バックアップを作成しながら編集sed -i.bak ‘s/foo/bar/’ input.txt
-nデフォルトで出力を抑制し、pオプションで指定した行のみ表示sed -n ‘s/foo/bar/p’ input.txt
-r拡張正規表現を使用sed -r ‘s/(foo
-E-rオプションと同様、拡張正規表現を使用sed -E ‘s/(foo
-s複数のファイルを入力として受け取り、それぞれに対して処理sed -s ‘s/foo/bar/’ file1.txt file2.txt
-u出力をバッファリングせず、アンバッファードモードで実行sed -u ‘s/foo/bar/’ input.txt
-zデータを行単位ではなく、NULL区切りで処理sed -z ‘s/foo/bar/’ input.txt

sedコマンドの基本操作

sedコマンドの基本操作をもう少し詳しく見ていきましょう。

  • 文字列の置換
  • 行の削除
  • 行の挿入と追加
  • 複数の命令を一度に実行

こちらでは「itc.txt」という以下のテキストファイルを使います。

baseball
soccer
rugby

文字列の置換

以下の例では、ファイル内の “soccer” を “football” に置換します。

$ sed 's/soccer/football/' itc.txt
baseball
football
rugby

行の削除

以下の例では、ファイル内の “baseball” を含む行を削除します。

$ sed '/baseball/d' itc.txt
soccer
rugby

行の挿入と追加

以下の例では、ファイル内の “soccer” を含む行の前に “basketball” を挿入します。

$ sed '/soccer/i\basketball' itc.txt
baseball
basketball
soccer
rugby

また、”soccer” を含む行の後に “basketball” を追加します。

$ sed '/soccer/a\basketball' itc.txt
baseball
soccer
basketball
rugby

複数の命令を一度に実行

以下の例では、”baseball” を “swimming” に置換し、”rugby” を含む行を削除します。

$ sed -e 's/baseball/swimming/' -e '/rugby/d' itc.txt
swimming
soccer

正規表現との組み合わせ

正規表現と組み合わせることもできます。

詳しく見ていきましょう。

  • 正規表現の基本
  • sedコマンドでの正規表現の使用方法

正規表現の基本

正規表現は、文字列のパターンを表現するための特殊な記法です。例えば、以下の正規表現は数字を表します。

[0-9]

sedコマンドでの正規表現の使用方法

以下の例では、連続する数字を “NUM” に置換します。

sed 's/[0-9]\+/NUM/' itc.txt

実践的な例と応用

こちらでは、実践で使える方法をお伝えします。

  • ファイルの一括置換
  • コマンドの連携
  • スクリプトファイルを利用した処理

ファイルの一括置換

以下の例では、複数のファイル内の “apple” を “orange” に置換します。

sed -i 's/apple/orange/' file1.txt file2.txt file3.txt

コマンドの連携

以下の例では、grepで “apple” を含む行を抽出し、その後 sedで “apple” を “orange” に置換します。

grep 'apple' input.txt | sed 's/apple/orange/'

スクリプトファイルを利用した処理

以下の例では、スクリプトファイル(script.sed)を利用して、一連の処理を実行します。

sed -f script.sed input.txt

よくあるエラーと対処法

よくあるエラーについてご紹介します。

エラーが起こる前に知っておけば、回避で切る確率が上がります。

  • エラーメッセージの意味
  • エラーの原因と解決策

エラーメッセージの意味

sedコマンドでエラーが発生した場合、エラーメッセージが表示されます。

これらのメッセージは、問題の原因や解決策を示しています。

エラーの原因と解決策

  • 構文エラー:命令や正規表現の構文が正しくない場合に発生するもので、構文を見直し、修正が必要
  • ファイルが見つからない:指定したファイルが存在しないか、パスが間違っている場合に発生するので、ファイル名やパスを確認して修正する
  • 権限エラー:ファイルへのアクセス権限がない場合に発生しますので、権限を確認し、必要に応じて変更する

今後の学習

もっと詳しく学習したいと考えているのであれば、以下のような選択肢があります。

  • 他のテキスト処理コマンド
  • より高度な学習リソース

他のテキスト処理コマンド

sedコマンド以外にも、UNIX/Linuxで使用できるテキスト処理コマンドがあります。

例えば以下のようなものです。

  • awkコマンド
  • grepコマンド
  • sortコマンド

これらのコマンドも学ぶことで、より効率的なテキスト処理が可能になります。

より高度な学習リソース

sedコマンドの応用や高度な利用方法を学ぶためには、以下のリソースが役立ちます。

  • 公式ドキュメント(GNU sedやBSD sed)
  • オンラインコミュニティ(Stack OverflowやReddit)
  • オンラインチュートリアルや書籍
created by Rinker
¥2,970 (2024/03/29 09:50:11時点 楽天市場調べ-詳細)

まとめ:sedコマンドでテキストを操作しよう

当記事の内容をまとめます。

  • sedコマンドは高速処理が可能なテキスト操作コマンド
  • sedコマンドでは命令を覚えなければならない
  • sedコマンドは文字列だけでなくファイルからも読み取れる

sedコマンドは、高速で処理が可能なテキスト操作用のコマンドです。

命令を覚えるのが大変ですが、一度覚えると作業効率が大きく向上します。

当記事の命令一覧をご覧いただきつつ、少しずつでも使える幅を広げていけば、作業スピードが上がることは間違いないでしょう。

タイトルとURLをコピーしました