([^/]+)
sed regexが正しく動作することができません。
スラッシュ以外のスラッシュ文字をすべて返す代わりに、1つのみを返します。なぜ、このsedコマンドでプラスが正しく動作しないのですか?
コマンド:期待
echo '/test/path/file.log' | sed -r 's|^.*([^/]+)/(.*)$|\1.\2|g'
:
path.file.log
結果:
h.file.log
もこれを試みたが、同じ結果だ:問題は[^/]+
ではありませんが、前の.*
で
echo '/test/path/file.log' | sed -r 's|^.*([^/]{1,})/(.*)$|\1.\2|g'
スラッシュが必ずしも先行するとは限りませんが、その部分をオプションにするには、 '^(。* /)?([^ /] +)'が必要です。バックワードを増やして考慮する必要があります余分なグループの –