UNIXのsedチュートリアル10

 

Guides, HowTos and Tips for Technology Geeks - The Geek Stuff

Sasikala氏がThe Geek StuffにおいてUnix Sed Tutorial: Find and Replace Text Inside a File Using RegExのタイトルのもと、sedコマンドで置換を実施する場合の使い方とその例題をまとめている。sedはテキストファイルから特定の行を表示したり削除、または特定の文字列を置換する用途で用いられる。特に文字列の置換をおこなうためのツールとして活用されることが多い。

sedは便利なツールだが、置換の指定方法はマニュアルを読むだけではわかりにくいところがある。実例を通して身につける方法がわかりやすい。Unix Sed Tutorial: Find and Replace Text Inside a File Using RegExではいくつかの異なる例を挙げながら動作を紹介している。紹介されている利用例は次のとおり。

sed 's/Linux/Linux-Unix/'

各行の最初に現れる「Linux」を「Linux-Unix」へ置き換える。

sed 's/Linux/Linux-Unix/g'

その行におけるすべての「Linux」を「Linux-Unix」へ置き換える。置換指定の最後に追加された「g」の指定が、すべての一致するものに対して置換を実施せよ、という命令になる。

sed 's/Linux/Linux-Unix/2'

その行において2つ目に現れる「Linux」を「Linux-Unix」へ置き換える。置換指定の最後に追加された「2」の指定が、2つ目に一致するものに対して置換を実施せよ、という命令になる。

sed -n 's/Linux/Linux-Unix/gpw output'

その行におけるすべての「Linux」を「Linux-Unix」へ置き換える (g)。置き換えが実施された行は標準出力へ表示する (p)。さらに出力された結果を指定されたファイル(ここではoutputという名前のファイルが指定されている)へ書き込む (w)。この例では3つのフラグが指定されている。「g」は前述したようにすべての一致するものに適用するという命令で、「p」は変換が実施された行を標準出力へ出力する命令、「w」は指定されたファイルへ変換された行を書き込む命令。

sed '/\-/s/\-.*//g'

その行において「-」があるところから行末までを削除する。「.」は任意の1文字、「*」は1つ前の文字の0回以上の繰り返しを意味する。

sed 's/...$//'

その行において行末から3文字文を削除する。「$」が行末を表現する。

sed -e 's/#.*//'

その行において「#」から行末までを削除する。

sed -e 's/#.*//;/^$/d'

その行において「#」から行末までを削除し、さらにその行そのものを削除している。「s/#.*//」と「/^$/d」の2つの命令が「;」で区切られてひとつにまとめられている。「^」は行頭を意味する。「/^$/d」は空行 (/^$/)を削除(d)するという意味になる。

sed 's/.$//'

DOSファイルの改行形式「\r\n」から「\r」を削除して「\n」のみにし、Unixで使いやすいものに変換する。

sed -e 's/<[A-Za-z\/]*>//g'

HTMLタグに一致する単語を削除する。「[A-Za-z\/]」が大文字小文字すべてのアルファベットとスラッシュを意味している。「/」が区切り文字として使われているため「\/」のようにエスケープして使っている。「\/」のようにバックスラッシュを先に書くと、その次の文字は通常の文字として扱われるようになる。なお、Unix Sed Tutorial: Find and Replace Text Inside a File Using RegExに掲載されている例は「's/]*>//g'」となっているが、これでは置換できない。掲載段階で編集を誤ったものとみられる。

区切り文字にはスラッシュ「/」が使われているが、使う文字が決まっているわけではない。「s」のあとに記載された文字が区切り文字として使われるため、パスを置換するなど「/」が区切り文字としてわかりにくい場合には「s,パターン,置換する文字列,g」のように使うこともできる。上記の例であればたとえばsed -e 's|<[A-Za-z/]*>||g'のように表記できる。「/」が区切り文字ではなくなるため、エスケープする必要がなくなっている。



転職ノウハウ

あなたが本領発揮できる仕事を診断
あなたの仕事適性診断

シゴト性格・弱点が20の質問でサクッと分かる!

「仕事辞めたい……」その理由は?
「仕事辞めたい……」その理由は?

71%の人が仕事を辞めたいと思った経験あり。その理由と対処法は?

3年後の年収どうなる? 年収予報
3年後の年収どうなる? 年収予報

今の年収は適正? 3年後は? あなたの年収をデータに基づき予報します。

激務な職場を辞めたいが、美女が邪魔して辞められない
激務な職場を辞めたいが、美女が邪魔して辞められない

美人上司と可愛い過ぎる後輩に挟まれるエンジニアの悩み

人気記事

一覧

イチオシ記事

新着記事

渡辺麻友、AKB演技バトル1位に喜び爆発「心臓止まった!うそ!?うれしい!!」
[02:00 9/29] エンタメ
声優・山崎エリイ、ソロデビュー曲「全部キミのせいだ」のMVを公開
[01:06 9/29] ホビー
『バンドやろうぜ!』、10/11配信開始予定! ゲーム紹介PVを公開
[00:27 9/29] ホビー
[ロロッロ]「みつどもえ」作者の新作 チャンピオンで連載開始
[00:00 9/29] ホビー
[あつまれ!ふしぎ研究部]「侵略!イカ娘」作者の新作 チャンピオンで連載開始
[00:00 9/29] ホビー

求人情報