sed 削除コマンドの正規表現デリミタに / 以外を使う
GNU sed 4.4 で確認した。
/regexp/d のデリミタ
sed '/regexp/d'
で regexp
にマッチする行を削除できる。
regexp
を括るデリミタに /
以外を使いたい場合、最初のデリミタの前に \
をつけるとできる。
$ cat input.txt | sed -e '\%regexp%d'
s/regexp/replacement/ のデリミタ
置換コマンド s/regexp/replacemenet/
でデリミタに /
以外を使いたい場合は、\
不要でそのまま使える。
$ cat input.txt | sed -e 's%regexp%replacement%'
違いは regexp がアドレスか、コマンドの一部か
sed スクリプトのシンタックスは次のようになる。
[addr]X[options]
X
はコマンド。(e.g. d
, s/regexp/replacement
)
addr
はアドレス。
addr
が指定された場合、addr
にマッチする行に対してのみ X
が実行される。
addr
にはいくつかの形式があり、正規表現で指定する形式として /regexp/
と \%regexp%
が利用可能。(それぞれに修飾子をつけた形式もある。)
後者の \%regexp%
はデリミタ %
を任意の文字に置き換えて利用できる。
要するに、
/regexp/d
の /regexp/
は アドレスであり、デリミタを変更したければ \%regexp%
を使う必要がある。
s/regexp/replacement/
はそれ全体 s/regexp/replacement/
が置換コマンドであり、 アドレスとは異なり \
なしでデリミタを変更できる。
コマンド s/regexp/replacement/
もアドレスと組み合わせて利用可能で、 正規表現アドレスと組み合わせると次のようになる。
$ cat input.txt | sed -e '/regexp1/s/regexp2/replacement/'
/regexp1/
部分はアドレスで、/regexp2/
はコマンドの一部なので、それぞれデリミタを変えようとすると次のようになる。
$ cat input.txt | sed -e '\%regexp1%s@regexp2@replacement@'
参考
Author And Source
この問題について(sed 削除コマンドの正規表現デリミタに / 以外を使う), 我々は、より多くの情報をここで見つけました https://qiita.com/kit494way/items/a03126f7901c230817bc著者帰属:元の著者の情報は、元の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 .