#のすべての出現を取得しようとしています。それらが連続している場合は、1つの#に置き換えます。
例えば.
ab ### cde fghi## jklm
になるだろう:
ab # cde, fghi# jklm
私の最初の目標は、連続するすべての数字を#で置き換えることでした。 120->#および3->#。しかし、120-> ###が見つかりました。だから今、私はこの新しい問題を残しています。
tr -s
の使用:
$ echo 'ab ### cde fghi## jklm' | tr -s '#'
ab # cde fghi# jklm
-s
入力の最後のオペランド(string1またはstring2のいずれか)にリストされている文字の複数のオカレンスを、文字の単一のインスタンスに圧縮します。これは、すべての削除と変換が完了した後に発生します。
元の問題は次の方法で解決できた可能性があります。
sed -E 's/[0-9]+/#/g'
またはPOSIXly:
sed 's/[[:digit:]]\{1,\}/#/g'
または:
tr -s '[:digit:]' '[#*]'