내 파일에 다음 줄이 있습니다.
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