スポンサーリンク
n番目に出現した文字列を置換
※awkの使い方をまとめて一覧にしました。
参考:awk入門-使い方まとめ一覧-
参考:awk入門-使い方まとめ一覧-
awkのgensubは、gsub()やsub()と異なり、n番目に出現した文字列を置換することができます。
(nを指定できる)
参考:awkの文字列置換関数gsub()の使い方
参考:awkのsub()で文字列置換する
入力文字列に対して、n番目に出現した置換対象文字列を置換文字列で置換します。
r = gensub( 置換対象文字列, 置換文字列, n, 入力文字列 )
例えば、下記のin.txtがあったとします。
$ cat in.txt 2017-12-16 雨 2017-12-17 曇り 2017-12-18 晴れ
下記がサンプルコードになります。
1回目に出現した"-"を"/"に置換します。
$ cat sample.awk #!/bin/sh cat in.txt | awk ' { r = gensub( "-", "/", 1, $0 ) print r } '
下記が実行結果になります。
$ ./sample.awk 2017/12-16 雨 2017/12-17 曇り 2017/12-18 晴れ
2回目に出現した"-"を"/"に置換します。
$ cat sample3.awk #!/bin/sh cat in.txt | awk ' { r = gensub( "-", "/", 2, $0 ) print r } '
下記が実行結果になります。
$ ./sample2.awk 2017-12-16 雨 2017-12-17 曇り 2017-12-18 晴れ
スポンサーリンク
入力文字列自体は置換されない。戻り値に置換後の文字列が返る
入力文字列自体は置換されず、戻り値に置換後の文字列が返ることに注意が必要です。
下記がサンプルコードになります。
$ cat sample2.awk #!/bin/sh cat in.txt | awk ' { gensub( "-", "/", 1, $0 ) print $0 } '
下記が実行結果になります。
$0自体は置換されないことが確認できます。
$ ./sample2.awk 2017-12-16 雨 2017-12-17 曇り 2017-12-18 晴れ
全ての文字列を置換する場合には、引数にgを設定する
ほぼ、機能的にはgsub()と近くなります。
全ての文字列を置換する場合には、引数にgを設定します。
下記がサンプルコードになります。
$ cat sample4.awk #!/bin/sh cat in.txt | awk ' { r = gensub( "-", "/", "g", $0 ) print r } '
下記が実行結果になります。
$ ./sample4.awk 2017/12/16 雨 2017/12/17 曇り 2017/12/18 晴れ
スポンサーリンク