如何从文件中删除特殊字符?

如何从文件中删除特殊字符?

我有一个文件包含:

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

我只想删除 之间的所有特殊字符<class> </class>

我尝试了这个命令。

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

在上面的命令中,我尝试保留字母、数字、标签,其他所有内容都应删除。

但它没有给我想要的输出。

答案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>

相关内容