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年後は? あなたの年収をデータに基づき予報します。

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

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

人気記事

一覧

イチオシ記事

新着記事

鉄道トリビア 第368回 対岸に渡りそうで渡らず、元の岸に戻ってしまう鉄橋がある
[08:00 8/27] ホビー
福士加代子「強がって表に出せなかった」リオを終えた胸の内を告白
[07:00 8/27] エンタメ
アニメ『夏目友人帳 伍』OP&EDを歌うアーティストが明らかに
[07:00 8/27] エンタメ
外国人が好きな"日本の夏の風物詩" - 「アリゾナ州では違法でした」
[07:00 8/27] ライフスタイル
かわいがりたい! と思われる後輩社員の特徴
[07:00 8/27] シゴト

求人情報