我有一个文件包含:
<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>