0

ハッシュタグで始まるすべての用語を新しい用語に置き換えたい

sed を使用していますが、構文エラーがあるようです

sed 's/#[a-zA-Z0-9]+/replacement/g' terms

構文を修正するにはどうすればよいですか?

4

2 に答える 2

1

私のバージョンのsedでは、+何も役に立ちません。*代わりに使用する必要があります。

于 2013-03-10T05:52:54.053 に答える
1

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:]]'
ë
è
é
$

ニーズに合ったものを使用できます。

于 2013-03-10T07:06:06.503 に答える