awk - 특수 문자열 검색 및 바꾸기

awk - 특수 문자열 검색 및 바꾸기

다음 문자열을 찾아 바꾸려고 합니다.

~|~\N 
pete@computer:~$ cat test.txt 
one~|~two~|~\Nthree

파이프 캐릭터가 특수 캐릭터라는 것을 알고 탈출했습니다. 아래의 이스케이프 문자도 이스케이프 처리했습니다. 내 시도는 다음과 같습니다.

pete@computer:~$ awk '{gsub(/~\\|~\\\N$/, "~|~"); print}' test.txt 
one~|~two~|~|~Nthree

예상되는 결과는 다음과 같습니다.

one~|~two~|~three

하지만 거기에 "|~"가 추가로 표시됩니다. 내가 뭘 잘못했나요?

고마워요, 피트

답변1

awk '{ gsub(/~\|~\\N/, "~|~") }1' infile

이스케이프해야 하는 특수 문자정규식$sub()/gsub()/gensub() 함수를 사용하려면 일치 끝 앵커 도 제거해야 합니다 .


다음 출력을 /~\\|~\\\N$/사용 ~\하는 경우 :~\N$~\~\~|~

one~|~two~|~|~Nthree
           ^^^  

관련 정보