정규식을 사용하여 문자열을 여러 줄에 나타나는 문자 "x"로 바꾸고 싶습니다.
문제는 예를 들어 다음을 포함하는 파일에서 x를 단어 뒤에 정수가 오는 x로 바꾸는 것입니다.
x44name
xjanname
x50name
예를 들어:
:1,2s/x[0-9]name/num/g
단어를 검색하고 바꾸려면 sed 또는 다른 명령을 사용해야 합니까?
다음 오류가 발생합니다.
E486: Pattern not found: x[0-9]name
답변1
0을 포함하여 원하는 수의 숫자를 가질 수 있는 경우 다음을 수행해야 합니다.
:%s/x[0-9]*name/num/g
항상 둘이라면
:%s/x[0-9][0-9]name/num/g
물론 [0-9] 대신 \d를 사용할 수도 있습니다.
:%s/x\d*name/num/g
%s
전체 파일 검색을 나타냅니다.s
현재 행만 검색됨을 나타냅니다.g
주어진 행의 모든 일치 항목을 나타냅니다.- g가 없으면 각 줄의 첫 번째 항목만 바꾸는 것을 의미합니다.
답변2
제가 올바르게 이해했다면 "num"은 "x" 다음의 숫자입니다. 다음 사항을 이해해 주시기 바랍니다.
:%s/x\([0-9]\)/\1/g