webdevqa.jp.net

sedを使用して数字の後にドットを続ける方法は?

私はsedを使用して、すべてのパターンを数字の直後にドットが続くもの(3.355.など)で空の文字列に置き換えることを試みています。だから私はしよう:

sed 's/\d+\.//g' file.txt

しかし、うまくいきません。何故ですか?

70
Mika H.

SedはPerlではないため、sed正規表現には\dの省略形はありません。

sed 's/[[:digit:]]\+\.//g'

sed正規表現ドキュメント はこちら

105
glenn jackman

2つの問題

  1. sed\dをサポートしません。 [0-9]または[[:digit:]]を使用してください。

  2. +は特別な意味を得るためにバックスラッシュされなければなりません:\+

66
choroba

Sedのマニュアルページは、re_formatのマニュアルページを参照しています。それは2つの区別をします:(1)廃止された正規表現と拡張正規表現。 (2)非拡張正規表現と拡張正規表現。 4つすべての組み合わせが可能です。 sedでは、時代遅れのものと拡張されたものの両方がサポートされていますが、どちらの場合も非拡張版のみがサポートされています。\d演算子は拡張正規表現の機能であるため、sedではサポートされていません。

3
Jonathan Pool