파일에서 특수 문자를 제거하는 방법은 무엇입니까?

파일에서 특수 문자를 제거하는 방법은 무엇입니까?

다음을 포함하는 파일이 있습니다.

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

관련 정보