アイクのネットキャッシング◆最高50万円◆スピード振込◆入会金年会費¥0

エディターを使用せずにテキスト内の文字を一括置換する。

sed コマンドを用いて行ないます。
構文は
sed [-e] 編集コマンド [ファイル名]        となります。

例えばテキスト中の全ての "linux" という文字を "リナックス" と置き換えたい場合は

$ sed 's/linux/リナックス/g' ファイル名
となります。

sedで実行した結果は標準出力に出力される為ファイルに書き出すにはリダイレクトを使います。

$ sed 's/linux/リナックス/g' ファイル名 > 出力先ファイル名

例)
1行目だけを置換したい場合
$ sed '1s/linux/リナックス/g' ファイル名 > 出力先ファイル名

1〜10行目だけを置換したい場合
$ sed '1,10s/linux/リナックス/g' ファイル名 > 出力先ファイル名

2行目から最終行までを置換したい場合
$ sed '2,$s/linux/リナックス/g' ファイル名 > 出力先ファイル名

1行目から先頭がlではじまる行までを置換したい場合
$ sed '1,/^l/s/linux/リナックス/g' ファイル名 > 出力先ファイル名

先頭がlではじまる行だけを置換したい場合
$ sed '/^l/s/linux/リナックス/g' ファイル名 > 出力先ファイル名

先頭がlではじまる行以外を置換したい場合
$ sed '^t/!s/リナックス/g' ファイル名 > 出力先ファイル名

※ 上記て使用されている g オプションは置換対象が複数あるとき全てを置換することを意味します。
   もし g オプションをはずすと、最初に見付かったもののみが対象となります。


スクリプトで一括置換

置換コマンドをスクリプトにしておけばいっきに置換が可能です。
例) $ cat henkan.sed
s/linux/リナックス/g
s/windows/ウインドウズ/g
s/mac/マック/g

$ sed -f hankan.sed ファイル名
で実行可能です。
 

正規表現を用いて置換する

名前が Kで始まる人をイニシャル K で置き換えます。
sed 's/^K[a-z]*,/K,/' filename

K.Sugioka,杉岡 研史
Hanako Yamada,山田 花子
K.Hiroshi,加藤 博
Hidetoshi Nakata,中田 英俊
 

パターンに一致した文字列を置換文字列の一部に使う

置換文字列中に & を用いるとその位置に検索文字列で一致した文字列を含めることができます。
次の例は日付の形式を "YY/MM/DD" から "19YY/MM/DD" にします。
$ sed 's/[0-9][0-9]\/[0-1][0-9]\/[0-3][0-9]/19&/' filename
K.Sugioka,1969/07/21
Hanako Yamada,1972/08/22
K.Hiroshi,1960/02/14
Hidetoshi Nakata,1966/12/03
$
ここで/の前に\を付けているのは/をsedの置換コマンドの区切りとしてでなく文字列として扱うためです。
 
 





MAIN