sed에서 작동하지 않는 [AJ]로 [0-9] 교체


11

모든 숫자 0-9를 sed의 해당 문자로 바꾸는 명령을 작성 중입니다. 나는 내가 잘못하고 있다는 것을 알고 있지만 sed는 대체 정규 표현식을 문자열 리터럴 이외의 것으로 해석하지 않습니다.

내가 사용하는 명령은 sed -r 's/[0-9]/[A-J]/g' log > ~/output.txt

그것은 나에게 매우 간단 해 보이지만 약 한 시간 동안 붙어 있습니다. 수신 한 출력은 0-9를 문자열 "[AJ]"로 바꿉니다.

답변:


38

대신, 일치 (왼쪽) 만 정규식입니다. 교체 (일부 백 슬래시 확장에) 더 많거나 적은 단지 리터럴 문자열입니다 - 그것의 정규식 없습니다 .

대체 s가 아닌 음역을 원하므로 다음 과 같이 바꾸십시오 y.

echo 34031445 | sed 'y/0123456789/ABCDEFGHIJ/'

sed는에서 범위를 사용할 수 y없지만 Perl은 다음을 수행 할 수 있습니다.

echo 34031445 | perl -pe 'y/0-9/A-J/'

또는 그냥 사용하십시오 tr:

echo 34031445 | tr 0-9 A-J

12
동의했다. tr가장 쉽고 아마도 가장 빠른 도구입니다.
sdkks
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.