目的
- 特定の文字列の置換
s///g とは何か
- s/A/B/g は A という文字を B という文字に置換してね!という意味
- s は置換をしてね!という意味
- g はマッチしたとこ全部置換してね!という意味
■ サンプルファイル
sample.txt
a,b,c
d,e,f
g,h,i
j,k,l
すべてのコンマを*に置換
$ sed 's/,/*/g' sample.txt
a*b*c
d*e*f
g*h*i
j*k*l
※ s///g の最後の g がないと、各行の最初にマッチした文字のみ置換する
$ sed 's/,/*/' sample.txt
a*b,c
d*e,f
g*h,i
j*k,l
2行目だけコンマを*に置換
★ 行数を s の前に書く
$ sed '2s/,/*/g' sample.txt
a,b,c
d*e*f
g,h,i
j,k,l
1行目のコンマを*に置換、3行目のコンマを@に置換
★ オプション e は複数の置換をしたいとき使う
$ sed -e '1s/,/*/g' -e '3s/,/@/g' sample.txt
a*b*c
d,e,f
g@h@i
j,k,l
2行目から4行目のコンマを*に置換
★連続している行なら2,4s
のように書く
$ sed '2,4s/,/*/g' sample.txt
a,b,c
d*e*f
g*h*i
j*k*l
コマンドをスクリプトに書いておく方法
※ コンマをすべて*に置換してね!というコマンドを適当なファイルに書いておく
mysed.txt
s/,/*/g
★ オプション f で上記のファイルを読み込み
$ sed -f mysed.txt sample.txt
a*b*c
d*e*f
g*h*i
j*k*l