텍스트 파일에서 단어의 특정 패턴을 제거합니다.

텍스트 파일에서 단어의 특정 패턴을 제거합니다.

내 파일에 다음 줄이 있습니다.

demo-ns,demoapp-v1-v000,2733202e0e44c0c8f49a220e5596113ee35e2566
demo-ns,demoapp-v2-v001,3b3f0592b933add32f10b7e1a7535837009a4c64

-v000문자 및 를 제거하고 싶습니다 -v001. 패턴은 입니다 v[0-9][0-9][0-9].

나는 다음과 같은 결과를 기대하고 있습니다 :

demo-ns,demoapp-v1,2733202e0e44c0c8f49a220e5596113ee35e2566
demo-ns,demoapp-v2,3b3f0592b933add32f10b7e1a7535837009a4c64

이 목표를 어떻게 달성할 수 있나요?

답변1

sed -e 's/-v[0-9][0-9][0-9],/,/'

추가된 쉼표는 대체가 너무 공격적이지 않도록 일부 컨텍스트를 제공합니다.

답변2

GNU 사용 sed:

sed -E 's/-v[0-9]{3}//' file

답변3

그리고 awk:

awk 'BEGIN{ OFS=FS="," } { sub(/-v[0-9]*$/,"",$2); print }' file

입력 필드 구분 기호 FS와 출력 필드 구분 기호를 OFS쉼표로 설정합니다. 그런 다음 두 번째 쉼표로 구분된 필드의
정규식 패턴을 빈 문자열로 바꾸고 해당 줄을 인쇄합니다.-v[0-9]*$$2

관련 정보