2017-06-01 3 views
-2

コンテンツに/ X \ U \ 1/gでは以下である:パターンS/(?Bを )説明 - セッドに与えsedの

-B-以下

試されるSED構文。

s/\(b\?\)-/x\u\1/g 

第三は、私はそれが一致する方法を知りたい出力

axxB 

です。私は 'b \?'を理解できません。どういう意味ですか? '\?'ただの意味ですか?

+0

'B \ - ' '-'一致もしくはます' B-'...' '貪欲にゼロまたは1時間に一致する数量詞があり、この場合、文字「b」 – Sundeep

+0

を参照してください。https://www.gnu.org/software/sed/manual/sed.html#BRE-syntax – Sundeep

+0

ウェブサイト – kingslayer

答えて

0

s/regex/replacement/gはあなたのコマンドの基本的な構造であり、あなたはここでそれについて読むことができます:

man sed | sed -n '/^\s\{7\}s\//,/exp.$/p'

sedはラインがラインも読み込みますので、あなたは、s///に追加することができますオプションgは、そこにあります最初の行だけでなく、行の中のすべての出現と一致するようにします。regexあなたが持っている理由です:
s/regex/replacement/g

あなたregex

あなたはman sedで上からヒントを読めば、あなたはそれがグループに交換可能である気づくことができます。あなたが望むなら、regexのグループが必要で、グループの構文は\(\)です。少なくとも、メタキャラクタは普通のバックスラッシュでエスケープする必要があります。\

あなたは文字 b魔女を探しているあなたの正規表現のグループで

もecapedする必要があると\{0,1\}の単なる短縮形である、なぜなら与えられた繰り返し\?で、最高1回マッチします。

あなたの正規表現に最後の文字はダッシュ-です。

だから、\(b\?\)-、0または1のグループbとダッシュを探しています。あなたのreplacement

:あなたの正規表現のグループは、グループの数が続くバックスラッシュの置き換えで参照することができ

。これはあなたの\1です。

GNU sedを使用している間は、次の文字を大文字に変換する拡張子\uがあります。あなたが最後にあなたの交換であなたの正規表現のグループを入れているので、後3.3 The s Command

を、通常と、s///であるため、あなたのgフラグを、あなたは最終的にすべてのダッシュを交換大文字にそれを向けるだろう:あなたはこのここについて読むことができます文字x

したがって、交換はx\u\1です。あなたが持っている理由

:??

$ echo "a-b-" | sed 's/\(b\?\)-/x\u\1/g' 
axxB 
関連する問題