Linux|sedコマンドで文字列の置換する方法【正規表現も使える】
こんにちは。
普段はIT業界についてのブログを執筆してるエンジニアです。
» 参考:プログラマーの年収は200万円以下です【IT業界の残酷な成功法則】
今回は、sedについての解説記事です。
sedコマンドで文字列を置換したい人
「sedコマンドを使って、ファイル内の特定の文字列を置換したいです。どうすればできますか?具体的なオプションの指定、利用例、コピーして使える例も欲しいです。」
こんな悩みを解決します。
この記事を書いている私はIT業界歴12年、うちサーバエンジニア歴6年、年収1,000万円ちょっとの金融系エンジニアです。IRIXやSolarisなどのUnixやmac、Linuxなど様々なUNIX系環境を扱ってきました。
これまでの経験を踏まえ、コマンドの解説に留まらず実務視点で利用方法を記事にしました。お役にたちましたら幸いです。
本記事の内容
1.sedで文字列を単純置換する
構文はこれだけ覚えておけばOKです
上の構文を使って、文字列「abc」を大文字:「ABC」に置換します
echo "abcabc" | sed -e 's/abc/ABC/g'
実行結果は以下の通りです。
ABCABC
sedによる実践的な文字列置換の例
sedを用いて、yahoo!トップからダウンロードしたhtmlファイル(下図の左側)から画像へのリンクを非表示にしてみましょう(下図の右側)。
まずはダウンロードを行います。
curl -o y.html https://www.yahoo.co.jp
ダウンロードしたhtmlファイルのimgタグをsedを用いて非表示にします。
cat y.html | sed -e 's/ edit.html
たったこれだけです。
2.sedで1回限定で置換する
「g」なしで置換すると、最初にマッチした文字列だけを置換します。
文字列「abc」を一回だけ「XYZ」に置換します
echo "abcabc" | sed -e 's/abc/ABC/'
実行結果は以下の通りです。
ABCabc
3.sedで複数の置換ルールを適用する
置換は1回のコマンドで複数指定し、連続して行うこともできます。
-e “s/《置換対象文字列②》/《置換後文字列②》/”
次の例では、「ab→AB」と「fg→FG」の2つの置換を行います
echo "abcdefg" | sed -e 's/ab/AB/' -e 's/fg/FG/'
実行結果は以下の通りです。
ABcdeFG
4.sedで正規表現を使って文字列を置換する
sedでは正規表現(正確にはワイルドカード)を使って置換する文字列を指定することができます。
文字列「ab」と「fg」をXXに置換します
echo abcdefg | sed -E 's/[ab|fg]/X/g'
実行結果は以下の通りです。
XXcdeXX
マッチ条件 | 記号 |
---|---|
任意の1文字 | . |
Aの1回以上の繰り返し(A,AA,AAA,…) | A+ |
Aの0回以上の繰り返し | A* |
AまたはB | A|B |
数字 | [0-9] |
数字以外の文字 | [^0-9] |
アルファベット/数字/アンダーバー | [a-zA-Z_0-9] |
アルファベット/数字/アンダーバー以外 | [^a-zA-Z_0-9] |
空白文字 | [ \f\n\r\t] |
空白文字以外 | [^ \f\n\r\t] |
5.【付録】そもそもsedとは
sed(Stream EDitor)は、入力ストリーム(ファイルまたはパイプラインからの入力)に対してテキスト変換などのデータ処理をおこなうために使用されるプログラムです(Wikipediaより)。
文字列の置換や削除、行単位で置換結果だけを抽出するなど、多様なテキスト処理を行うための汎用性の高いコマンドです。文字列の置換を行うときはsed、1文字の単純な置換を行うときはtrコマンドを使うと便利です。
参考
sedコマンド – 文字列を置き換える/置換した行を出力する(外部サイト)
今回は以上です。sedコマンドで文字列の置換する方法を解説しました。参考になりましたら幸いです。
Blog TOP Linuxコマンドを勉強したい人向け|Linuxの使い方 記事まとめ
Linux&Linuxコマンドを勉強したい人向けの記事もくじ
用語解説・技術一般
"UNIXとLINUX"の違いについて解説します
CUIとGUIの違い・特徴について解説します
サーバリソースを確認するコマンドの使い方
【Linux】CPU使用率を確認する3つの方法を解説します
【Linux】topコマンドで,CPU消費の原因を特定する方法
【Linux】ps実行時に-efオプションを付ける理由について
【Linux】メモリ使用率を確認する|容量・空きの確認も
【Linux】ディスク容量を確認する|ディスク容量監視も
ファイル操作に関するコマンドの使い方
【Linux】ファイルの行数をカウントする方法を解説
【Linux】文字コード変換ならiconvコマンド1択です
【Linux】/dev/nullを、エンジニアが使う2つの目的
【Linux】findのexecオプションの使い方とその注意点
【Linux】findの結果から圧縮ファイルを作るコマンド
【Linux】hostsの場所はどこ?→/etc/hostsにあります
【Linux】touchコマンドで,時刻更新&空ファイル作成
Linux管理者用コマンドの使い方
【Linux】再起動コマンド(shutdown)の使い方と注意点
よく使う便利なコマンドの使い方
【Linux】改行なしでechoコマンドを使う時の -nオプション
【Linux】sleepコマンドの使用例と注意点について解説する
【Linux】rmコマンドでディレクトリを削除する方法を解説
【Linux】ファイルを削除するコマンド2選【rm以外もあり】
【Linux】awkの区切り文字を指定する,-Fオプションを解説
【Linux】sedで文字列の置換をするeオプションを解説する
【Linux】dateコマンドのフォーマットとその便利な使い方
【Linux】大文字から小文字に変換する方法【小文字から大文字も】
シェルの便利機能
「今の会社を辞めて転職します。エンジニア職に強みのあるおすすめの転職サイト・転職エージェントを教えて欲しい。また好条件で転職するにはどうすれば良いですか?」こんな悩みに答えます。 ITエンジニアに強いおすすめの転職サイト・転職エージェント3選 転職成功には強くてニューゲームが条件。どうやって実現する?