sed를 사용하여 파일의 밑줄로 도트 바꾸기


4

sed를 사용하여 파일의 출력을 편집하려고했습니다. 파일의 내용은 다음과 같습니다.

cat /tmp/Group_RM
t.p@k.p
t.m@k.k

출력을 다음과 같이 얻으려고했습니다.

cat /tmp/Group_RM
t_p@k_p
t_m@k_k

아래 명령을 시도했지만 출력이 이상하게 보입니다.

cat /tmp/Group_RM | sed 's/./_/g'

출력은 다음과 같습니다.

____ ___
_______

sed는 모든 문자를 밑줄로 대체합니다. "_"을 "."로 대체하려고하면 sed가 완벽하게 작동합니다.


1
게시물에 서명하지 말고 코드 네 칸을 들여 쓰거나 코드를 선택하고 Ctrl-K 또는 {} 코드 단추. HTML 필요 없음 <br> 에스. 감사!
slhck

답변:


10

너 탈출해야 해. . 처럼 \.. . 다음과 같은 특별한 메타 문자입니다. 모든 단일 문자와 일치합니다. .

$ sed 's/\./_/g' Group_RM
t_p@k_p
t_m@k_k

참고로, cat 필요하지 않습니다 - sed 파일 자체를 다룰 수 있습니다.


4

이유는 점이 정규식의 특수 문자이기 때문입니다. 실제 점을 의미하는 경우 \를 사용하여 이스케이프 처리해야합니다.

또한 고양이는 필요 없으며 파일 이름을 sed에 직접 지정할 수 있습니다. 작동 방식 :

sed 's/\./_/g' myfile.txt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.