sedコマンドと拡張正規表現2


正規表現のパターン指定をもっと完結にしたい

※「シス環系女子 season2 第8話」の備忘録です。

sedコマンド便利なオプション

以下、テストデータ

$ cat test.log 
1,hoge,hogehoge
2,fuga,fugafuga
3,piyo,piyopiyo
4,foo,foofoo
5,bar,barbar
6,BAR,barBAR
7,baz,bazbaz
  • オプションg: global replacement.1行内で該当する文字列全てを変換させる。
$ cat test.log | sed -e "s/bar/bora/g"
1,hoge,hogehoge
2,fuga,fugafuga
3,piyo,piyopiyo
4,foo,foofoo
5,bora,borabora
6,BAR,boraBAR
7,baz,bazbaz
  • オプションi: ignore case.大文字・小文字の違いを区別しない。

省略。
※なんとmac os では「i」オプションが使えないらしく、MacPortsまたはHomeBrewからgsedをインストールしてから、エイリアスsed='gsed'作成する必要があるらしい。(以下参照元)
https://codehero.jp/macos/4412945/case-insensitive-search-and-replace-with-sed

その他便利な拡張正規表現

  • ブラケット:

例えば以下は同じ意味になる。

"s/(A|B|C|D|E|F/\1-0/"

"s/([A-F])/\1-0/)

以下も全て同じ意味。

"s/(A|B|C|G|H|N|M|O/\1-0/"

"s/([A-C]|G|H|[N-O])/\1-0/)

"s/([A-CG-IN-O])/\1-0/)