다음 문자열을 찾아 바꾸려고 합니다.
~|~\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
^^^