치환 명령어 '%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, 1이면 *10을 한 결과.
꼼수라 부르기 미안하네(..)
관련 글
댓글 없음:
댓글 쓰기