답변:
해당 구문을 사용하십시오.
sed 's/馑//g' file1
또는 탈출 된 형태로 :
sed "s/$(echo -ne '\u9991')//g" file1
(이전 버전의 Bash 및 일부 셸은 이해하지 못 echo -e '\u9991'
하므로 먼저 확인하십시오.)
sed
g 수정자가 있기 때문에 서로 따르는 경우에도 모든 발생을 대체합니다. 또한 sed는 한 문자로 계산해야 echo -ne "馑" | wc -m
합니다 1
. gives를 참조하십시오 . 바이트 wc -c
수를 세면 반환 3
됩니다. 귀하의 질문을 올바르게 이해 했습니까?
.
평균 "하나 개의 문자"또는 "한 바이트?"
echo 馑 | sed s/...//
나에게 馑
아무것도주지 않습니다 (아무것도 대체되지 않습니다)
en_US.UTF-8
에서 작동 하지만 아래 에서는 작동 하지 않습니다 C
.
펄은 그렇게 할 수있다 :
echo 汉典“馑”字的基本解释 | perl -CS -pe 's/\N{U+9991}/Jin/g'
-CS
표준 입력, 출력 및 오류에 대해 UTF-8을 켭니다.
다양한 버전의 sed
지원 유니 코드 :
BSD sed에 대한 정보를 찾을 수 없었습니다. 이상하다고 생각했지만 유니 코드도 지원할 가능성이 높다고 생각합니다. 불행히도, sed
어떤 인코딩을 사용할 것인지를 결정하는 표준 방법이 없으므로 각 인코딩은 고유 한 방식으로 수행합니다.
이것은 나를 위해 작동합니다 :
$ vim -nEs +'%s/\%u9991//g' +wq file1
내가 원하는 것보다 더 장황하다. 전체 설명은 다음과 같습니다.
-n
vim 스왑 파일 비활성화-E
전 개선 된 모드-s
무음 모드+'%s/\%u9991//g'
대체 명령을 실행+wq
저장하고 종료file1
위치에서 수정한다고 가정 한다. 맞습니까?
echo 馑 | sed s/...//
아무것도 인쇄합니까?