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" 사용).