다음을 포함하는 파일이 있다고 가정 해 보겠습니다.
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/'