ファイルから特殊文字を削除する方法は?

ファイルから特殊文字を削除する方法は?

以下を含むファイルがあります。

<class>
these are special @ $ characters / < > & " '
</class>

。間にある特殊文字をすべて削除したいと思います<class> </class>

このコマンドを試しました。

sed  "s/[^a-zA-Z0-9(<.class>)(<\/class>)/ /g" file.txt

上記のコマンドでは、文字、数字、ラベルを保持しようとしましたが、他のすべての項目は削除する必要があります。

しかし、それは私に望む結果を与えません。

答え1

ブロックが1つだけで、class各ラベルが別々の行にあると仮定すると、GNU awkは次のように動作します。

awk '/<\/class>/{p=0};p{gsub(/[^A-Za-z0-9]/," ")};/<class>/{p=1};1' file.txt

答え2

以下のコマンドでテストを完了し、以下のコマンドを使用して正しく機能しました。間にあるすべての特殊文字をsed削除しました。[<>&$@/'"]<class> and </class>

入力.txt

<class>
these are special @ $ characters / < > & " '
</class>

注文する

sed -n '/<class>/,/<\/class>/p' input.txt | sed '/^[a-z]/s/[<>&$@/]//g' | sed "s/'//g" | sed 's/"//g'

出力

<class>
these are special   characters
</class>

関連情報