ハッシュタグで始まるすべての用語を新しい用語に置き換えたい
sed を使用していますが、構文エラーがあるようです
sed 's/#[a-zA-Z0-9]+/replacement/g' terms
構文を修正するにはどうすればよいですか?
私のバージョンのsedでは、+
何も役に立ちません。*
代わりに使用する必要があります。
sed
+
は、特別な演算子として を提供しない「基本正規表現」 (BRE) をサポートします。
の正しい置き換え+
は
sed 's/#[[:alnum:]]\{1,\}/replacement/g'
また
sed 's/#[[:alnum:]][[:alnum:]]*/replacement/g'
GNU sed
最近BSD sed
提供された「拡張正規表現」(ERE) マッチング:
sed -E 's/#[[:alnum:]]+/replacement/g'
(ただし、現在文書化されていないため、GNU sed
おそらく使用する必要があります)-r
-E
また\+
、拡張機能としてBRE
、
sed 's/#[[:alnum:]]\+/replacement/g'
移植性が必要な場合はBRE
、通常の を使用する必要がありますsed
。
@ user784637[[:alnum:]]
の代わりに使用しました[a-zA-Z0-9]
。これは、たとえば分音記号のある文字にも一致します。
$ printf "%s\n" ë è é | grep '[a-zA-Z0-9]'
$
対。
$ printf "%s\n" ë è é | grep '[[:alnum:]]'
ë
è
é
$
ニーズに合ったものを使用できます。