2つの文字列の間のスペースを削除しようとしていますが、
312.2 MB
123.34 KB
487.1 GB
私はそれらを次のように変更したいと思います:
312.2MB
123.34KB
487.1GB
頑張ってきて、次のことができます。
echo "312.2 MB" | sed s/[0-9][[:space:]][GMK]//g
312.B
しかし、次のように逆参照を作成しようとするとsed
:
echo "312.2 MB" | sed s/\([0-9]\)[[:space:]]\([GMK]\)/\1/g
312.2 MB
私の考えでは、一致が1つだけあり、逆参照が完全な一致であるようです。しかし、次のようになります。
echo "312.2 MB" | sed s/\([0-9]\)[[:space:]]\([GMK]\)/TRY/g
312.2 MB
()
だから私が次を使ってキャラクターをキャプチャするとき
正規表現は完全に正確ではないかもしれませんが、その理由はわかりません。
ベストアンサー1
問題は参照にあります。
コマンドを引用しなかったため、sed
角かっこは\(...\)
に渡される前にシェルによって解釈されますsed
。
したがって、sed
エスケープされた角かっこではなくリテラル角括弧として扱われ、逆参照には影響しません。
以下を行う必要があります。
echo "312.2 MB" | sed 's/\([0-9]\)[[:space:]]\([GMK]\)/\1\2/g'
逆参照に影響を与え、必要なものを入手してください。
またはより簡単に:
echo "312.2 MB" | sed 's/ //'