숫자 앞에 오는 문자만 바꾸기

숫자 앞에 오는 문자만 바꾸기

다음을 포함하는 파일이 있다고 가정 해 보겠습니다.

abcxd,abcx,6000/600x1

앞에 숫자가 있는 것으로 x바꿔야 합니다 . *나는 노력했다

sed 's/[0-9]x/*/g'

그러나 예상되는 출력은 다음과 같기 때문에 잘못된 것입니다.

abcxd,abcx,6000/600*1

답변1

캡처 그룹 및 역참조 사용

$ echo 'abcxd,abcx,6000/600x1' | sed 's/\([0-9]\)x/\1*/g'
abcxd,abcx,6000/600*1
  • \([0-9]\)참조할 수 있도록 번호를 캡처하세요.\1
    • 바라보다캡처 그룹이 정규식 사용법에 대한 추가 토론
  • ERE를 사용하면 구문은 다음과 같습니다.sed -E 's/([0-9])x/\1*/g'
  • g여러 일치 항목을 교체해야 하는 경우 수정자를 사용하세요.


이와 같은 정규식 스타일의 경우 pcre다음을 사용할 수 있습니다.주위를 둘러보세요

$ echo 'abcxd,abcx,6000/600x1' | perl -pe 's/\d\Kx/*/g'
abcxd,abcx,6000/600*1

답변2

이 시도:

$ echo "abcxd,abcx,6000/600x1" |\
sed -E 's/^([a-z,]*)([0-9\/]*)(x)(.*$)/\1\2*\4/'

관련 정보