こんばんは!sedの夜明けはちかいぞ龍馬くん。というわけでちかんのおしりをはじめましょ(^0^)
sedの別コマンドのお話にうつる前に、置換でやっておきたいことがまだいくつかありました。今回はフラグ、次回にスクリプトファイルについて書きます。さっそくフラグに突入でい。
sed ”s/検索する言葉/置換する言葉/” 対象ファイル > 出力ファイル
この構文で置換の基本はできるようになったですが、実は、これだけでは対処できない置換があります。例えば。次の3行だけが入っているファイル sample.txtで。
例1: ほにゃらげのぽぽ。 例2も参照のこと。
例2: せったくれのとと。
例3: さーとーますりぷとん。 例1、例2も参照のこと。
例というのをExampleに置換したいとして、sedを使いますと。
>sed "s/例/Example/" sample.txt
>
>Example1: ほにゃらげのぽぽ。 例2も参照のこと。
>Example2: せったくれのとと。
>Example3: さーとーますりぷとん。 例1、例2も参照のこと。
という結果になってしまいます。2番目に一致しているはずの部分が「例」という言葉のままになってて「Example」に変換されていな~い(;_;)
というのもいっちゃん最初に見つかったものしか変換してくれないのがsedの特徴なんですのよほほほ。したがって、検索置換したい言葉が1行に複数出てくるとあらかじめわかっている場合は、構文におまけをつけ加える必要があります。 そのおまけをフラグ(flag)といいます。構文を修正しますと。
sed ”s/検索する言葉/置換する言葉/フラグ” 対象ファイル > 出力ファイル
フラグのうち使えそうなもの2つの説明をば。えいやっ。
g
ウは宇宙船のウ。gはglobalのgです。探す言葉が1行の中にいくつ入ってようとそれをぜ~んぶ置換しようという意味。
n
n=1~512。1行中で何番目に出てきた検索語を置換するかを決めます。デフォルトの状態ではn=1ということになりますね。
さてさっきのファイルsample.txtで実験しようそうしよう。 まずはぐろーばる。
sed "s/例/Example/g" sample.txt
結果は、
Example1: ほにゃらげのぽぽ。 Example2も参照のこと。
Example2: せったくれのとと。
Example3: さーとーますりぷとん。 Example1、Example2も参照のこと。
お次はn。ここではn=2としてみると。
sed "s/例/Example/2" sample.txt
結果は以下のとおり。2番目に一致した部分しか置換されません(^0^)
例1: ほにゃらげのぽぽ。 Example2も参照のこと。
例2: せったくれのとと。
例3: さーとーますりぷとん。 Example1、例2も参照のこと。
以上置換コマンドのおしり(最後)にくっつけるフラグのお話でしたよん。 ではまた来週スクリプトファイルの巻でお会いしましょうね。