末尾にマイナス記号が付いている値を置き換えて、先頭にマイナス記号を付けようとしています。理由はわかりませんが、SEDではうまく機能しないこの正規表現があります。
echo '8.8-' | sed 's/(\d+(?:\.\d+)?)-/-\\1/'
SEDは8.8を返します-
8.8-に一致し、サブマッチ\1を8.8として識別するNotepad++RegExHelpプラグインの式を試しました
末尾にマイナス記号が付いている値を置き換えて、先頭にマイナス記号を付けようとしています。理由はわかりませんが、SEDではうまく機能しないこの正規表現があります。
echo '8.8-' | sed 's/(\d+(?:\.\d+)?)-/-\\1/'
SEDは8.8を返します-
8.8-に一致し、サブマッチ\1を8.8として識別するNotepad++RegExHelpプラグインの式を試しました
は\d
Perlismです。Sedは、Perl以前の古いPOSIX標準を指します。あなたがおそらく欲しいのは
echo '8.8-' | sed -r 's/([[:digit:]]+(\.[[:digit:]]+)?)-/-\1/'
これ[[:digit:]]
は、Perlを書くためのPOSIXの方法\d
です。
もちろん、[0-9]
他の人が指摘しているように、代わりに、と書くこともできます。
-r
ちなみに、かっこを好きなように機能させる必要があります。
\d
ただし、sedの数字クラスとは一致しません[0-9]
。
ところで、あなたが本当にやろうとしていることを含めてください-あなたは数字を扱っていますか?整数と小数?私はあなたの正規表現からできるだけ多くを推測することができますが、質問が適切に尋ねられれば、そうする必要はありません。
編集
GNU linuxを使用している場合は、移植性が高いため、従来の範囲よりも文字クラスを使用することをお勧めします。
echo '8.8-' | sed -r 's/([[:digit:]]+(\.[[:digit:]]+)?)-/-\1/'
echo '8- 8.1- 81.2- 8.28- 82.28-' | sed -r 's/([0-9]+(.[0-9]+)?)-/-\1/g'
結果は
-8 -8.1 -81.2 -8.28 -82.28
Sedは単に\dまたは\dを理解していません:
echo "456" | sed -r 's/\d/+/g'
456