文字、数字以外の項目はすべて「」に置き換えます

文字、数字以外の項目はすべて「」に置き換えます

「.」、「-」、「/」などのすべての記号を「」に置き換えたい。

試しましたがsed 's/[[!:alnum:]]/ /g' example.txt動作しません

の場合、sed 's/[,;\.\-\/()_]/ /g' example.txt「-」の代わりに「」を使用できないことがわかりました。

これを行う方法はありますか?

答え1

英数字以外のすべての文字を一致させるには、次のよう[^[:alnum:]]にします。[^abc]前のキャレットは、角かっこ式がリストされている文字を除くすべての文字と一致するようにします。

リテラルダッシュを一致させるには、一致する文字リストを生成するために解釈されないようにする必要があります。角かっこ式の最初の文字で作成します[-,.;/()_]

/sed は角括弧式内にある場合は区切り文字として扱わないので、s///前にバックスラッシュを付ける必要はありません。 (バックスラッシュはそれ自体で一致します。)たとえば、echo 'a\b/c' | sed 's/[/\]/./g'print a.b.c

例えばregex(7)マニュアルページ正規表現構文に関する注意事項です。 (主にsed -E多くの/ほとんどのsedで使用される拡張正規表現(ERE)について説明します。)

関連情報