次のコマンドを実行するとします。
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