Sedコマンド内の正規表現の問題に直面する

Sedコマンド内の正規表現の問題に直面する

次のコマンドを実行するとします。

export STR="abcdef.ghijkl.mnopqr.stuvwy.log"
echo $STR | sed 's/\.[^.]*$//'

私は次のような結果を得ます。

abcdef.ghijkl.mnopqr.stuvwy

上記の結果は理解できません。

ベストアンサー1

sedパターンには、\.[^.]*$元の文字列と一致するものが1つだけあります.log

詳細:

  • \.ドット文字のみが一致します。
  • [^.]何でも他と一致.
  • [^.]*以下の文字シーケンスと一致します。.
  • $行の終わりと一致します。

したがって、ここで最後の項目.logは唯一の一致です(.stuvwy.log内部点が含まれているため、一致ではありません)。sedコマンドが要求するように空の文字列に置き換えられますs/\.[^.]*$//。だからあなたは終わります:

abcdef.ghijkl.mnopqr.stuvwy

おすすめ記事