OS X(Homebrew를 통해 설치된 4.2.2)에서 GNU sed로 교체하려고 합니다. 그러나 이것은 작동하지 않습니다.
printf "Hello\x92 World" | gsed -r "s/[\x92]/'/g"
예상되는 출력은 다음과 같습니다.
Hello' World
실제 출력은 다음과 같습니다.
Hello<unknown character symbol> World
나는 또한 다음을 시도했습니다.
printf "\x92" | gsed -r 's/[\x92]/P/g'
그러나 인쇄할 수 없는 문자인 "\x92" 바이트가 계속 나타납니다.
내가 여기서 뭘 잘못하고 있는 걸까?
답변1
방금 sed
정보 페이지( info sed
)를 꼼꼼히 확인하고 다양한 방법으로 꽤 많은 실험을 해봤습니다.
\x92
내 결론: 표현된 문자를 문자 클래스에 넣을 수 없습니다 .
그러나 |
.
다음은 몇 가지 데모입니다.
$ printf "a\x92\n"
a?
$ printf "a\x92\n" | sed 's/[a\x92]/P/g'
P?
$ printf "a\x92\n" | sed 's/[a\\x92]/P/g'
P?
$ printf "a\x92\n" | sed 's/[a'$'\x92'']/P/g'
P?
$ printf "a\x92\n" | sed 's/[a'"$(printf '\x92')"']/P/g'
P?
$ printf "a\x92\n" | sed 's/[a[\x92]]/P/g'
a?
$ printf "a\x92\n" | sed 's/a\|\x92/P/g'
PP
$ printf "a\x92\n" | sed -r 's/a|\x92/P/g'
PP
$