VIM 치환 꼼수?

27438
2020-04-26

0과 1로 구분된 데이터가 있다. 그런데 이상하게 구분값 1은 0, 0은 1로 바꾸고 싶네?

치환 명령어 '%s/1$/0/'와 '%s/0$/1/'를 순서대로 실행하면 1 -> 0, 0 -> 1로 바뀔까?

첫 번째 작업에서 1이 사라지고 0만 남기 때문에, 결과적으로 마지막엔 1만 남는다.

이럴 때 흔히 쓰이는 꼼수

① 0 -> 1 치환 시 중복을 막기 위해 1 -> 11로 잠시 피신.

② 0 -> 1 치환

③ 11 -> 0 치환

이게 귀찮다면?

구글신께 물어봤다. 오~ 조건 치환이 가능하단다.

① 정규표현식 '[01]$'을 이용해서 줄 끝에 위치한 0과 1을 검색

② '\=' 이후 표현식은 전체 검색 결과인 submatch(0)가 0이면 1로, 아니면 0으로 치환

산술 연산도 가능하다. 다음은 검색 결과가 0이면 +100, 아니면 *10을 한 결과.

꼼수라 부르기 좀 미안하네(..)


Popit은 페이스북 댓글만 사용하고 있습니다. 페이스북 로그인 후 글을 보시면 댓글이 나타납니다.