View on GitHub

Today I Learned

Software Engineering Blog

sed

最初に発見した対象を置換

$ echo クロロエチルエチルエーテル | sed 's/エチル/メチル/'
クロロメチルエチルエーテル

すべて置換したい場合は後ろにgをつける

$ echo クロロメチルメチルエーテル | sed 's/メチル/エチル/g'
クロロエチルエチルエーテル

&で検索対象の文字列を再利用する

$ echo クロロエチルエーテル | sed 's/エチル/エチルエチル/g'
クロロエチルエチルエーテル
$ echo クロロエチルエーテル | sed 's/エチル/&&/g'
クロロエチルエチルエーテル

検索対象の文字列をかっこで囲むと順番に番号が与えられ、置換後の文字列のところで\1, \2として検索対象を再利用できる。後方参照と呼ばれる。

$ echo クロロメチルエチルエーテル | sed -E 's/(メチル)(エチル)/\2\1/'
クロロエチルメチルエーテル

sed -n '/正規表現1/,/正規表現2/p'で範囲検索ができる。

$ cat log_range.log | sed -n '/24\/Dec\/2016 21:..:../,/25\/Dec\/2016 03:..:../p'
192.168.77.248 - - [24/Dec/2016 21:12:20] "GET / HTTP/1.0" 200 4294
192.168.152.143 - - [24/Dec/2016 22:06:19] "GET / HTTP/1.0" 200 7255
192.168.6.132 - - [24/Dec/2016 23:00:42] "GET / HTTP/1.0" 200 4298
192.168.222.3 - - [25/Dec/2016 00:03:23] "GET / HTTP/1.0" 200 8547
192.168.101.95 - - [25/Dec/2016 01:01:40] "GET / HTTP/1.0" 200 8488
192.168.141.18 - - [25/Dec/2016 02:15:52] "GET / HTTP/1.0" 200 4533
192.168.110.169 - - [25/Dec/2016 03:06:54] "GET / HTTP/1.0" 200 3461