ハッシュタグで始まるすべての用語を新しい用語に置き換えたい
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:]]'
ë
è
é
$
ニーズに合ったものを使用できます。