sedコマンドと拡張正規表現
表記が一定でない語句をまとめて置換したい
※「シス環系女子 season2 第7話」の備忘録です。
正規表現
パターン指定で検索や置換に便利。
- 基本正規表現
- 拡張正規表現
- Perl互換正規表現
などがある。
vimによる拡張正規表現
以下のように拡張正規表現を使える。
:%s/\v検索するパターン/置換後の文字列/
具体例
:%s/\v(未着手|進行中|保留)/完了/
sedによる拡張正規表現
以下のように拡張正規表現を使える。
以下、テストデータ。
$ cat test_for_sed.log
1,Windows XP SP3,2021-04-01,故障中
2,Windows XP SP3,2021-04-02,出荷中
3,Windows XP SP3,2021-04-03,故障中
4,mac OS,2021-04-03,故障中
5,Windows XP SP3,2021-04-04,出荷中
6,Windows XP SP3,2021-04-05,故障中
これの「Windows」で、かつ「故障中」のものだけを修理中にするsedコマンドと拡張正規表現を考える。
答えは以下の通り。
cat test_for_sed.log | sed -E -e "s/(Windows .+)故障中/\1修理中/"
1,Windows XP SP3,2021-04-01,修理中
2,Windows XP SP3,2021-04-02,出荷中
3,Windows XP SP3,2021-04-03,修理中
4,mac OS,2021-04-03,故障中
5,Windows XP SP3,2021-04-04,出荷中
6,Windows XP SP3,2021-04-05,修理中
各オプションの意味
-E: OS XやBSDで拡張正規表現を使う場合のオプション。(※Linux用のGNUの場合は「-r」を使う。)
(): 後方参照で使う文字列。
\1: 後方参照の文字列が入る箇所。2つ目、3つ目の文字列はそれぞれ「\2」「\3」となる。
.+: 「.」は任意の1文字。「+」は前の文字の1回以上の繰り返しを示す。よって「.+」は任意の文字列の1回以上の繰り返し。
Author And Source
この問題について(sedコマンドと拡張正規表現), 我々は、より多くの情報をここで見つけました https://qiita.com/neo_fukafukafukka/items/c8464b67bdfb7dfc9add著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .