sed 명령은 특수 문자(저작권 및 상표 기호)를 제거할 수 없습니다.

sed 명령은 특수 문자(저작권 및 상표 기호)를 제거할 수 없습니다.

sed 명령을 사용하여 저작권 문자를 제거하려고 합니다. 하지만 작동하지 않습니다. 아래는 사용되는 명령어입니다.

sed 's/; © E/; (c)/g' input.txt > output.txt

하지만 vi편집기를 사용하여 파일을 열면 \251.

도와주세요?

답변1

모두 감사합니다.

Perl에서 해결책을 얻었습니다.

perl -lape 's/[^[:print:]]*//g'

답변2

16진수 코드를 사용하여 이를 수행하려면 불쾌한 트릭을 사용할 수 있습니다. 예를 들어 기본 UTF-8 ascii에서는 which is를 사용하여 '작은 따옴표 \x27의 16진수 코드를 인쇄할 수 있습니다.

echo -e "\x27hello\x27"
'hello'

저작권 기호는 기본 ASCII 테이블의 일부가 아니지만 확장 ASCII 코드에 속합니다. 16진수 코드의 조합으로 확장 ASCII를 인쇄할 수도 있습니다.

(제안을 토대로http://www.fileformat.info/info/unicode/char/a9/index.htm)

echo -e '\xc2\xa9'
©

마찬가지로 sed에서 이러한 16진수 코드를 사용할 수 있습니다.

a="hello ©"
sed 's/\xc2\xa9/??/' <<<"$a"  ##replacing copyright symbol with two questionmarks
hello ??

저작권 기호를 나타내는 \xc2\xa9가 작동하지 않으면 "원으로 둘러싸인 라틴 대문자 C"인 \xe2\x92\xb8을 시도해 볼 수 있습니다.

또한 시도해 보십시오 \o251(0 대신 소문자 "o" 사용).

관련 정보