すべての数字を「@」記号に置き換えたいです。以下のsedコマンドを使用していますが、目的の結果が得られませんでした。
注文する -
echo "abc 434 pankaj 444" | sed 's/[0-9]*/@/g'
結果 -
@a@b@c@ @ @p@a@n@k@a@j@ @
ベストアンサー1
まあ、簡単です。[0-9]*
全体が次の文字列と一致します。0以上空の文字列を含む数値。空の文字列に一致するすべての項目は、2 つの文字間で一致するため、@
入力内のすべての文字の間に置換が追加されます。@
式はすべての連続した数字を一度に一致させるため、複数桁の文字列は1桁に置き換えられます。
したがって、入力文字列では、一致はab43
次のようになります[0-9]+
(明確にするためにいくつかのスペースが追加されます)。
a b 434
^ ^ ^^^- here, a string of some digits
^ ^- here, a zero-length string
^- here, a zero-length string
[0-9]
正確に1桁の数字と一致するか、[0-9][0-9]*
1つ以上の数字(または[0-9]+
拡張正規表現)と一致するために使用されます。