2013-09-30 3 views
2

모두, AWK를 사용하여 아래 문자열을 첫 번째 부분으로 분할하고 싶습니다.awk를 사용하여 부분 문자열 얻기

AWK 표현식 작성 방법은 무엇입니까?

#!/bin/bash 

function parsePackageName() 
{ 
    #....... here I want to get the String "pp-demo-mid" 
    #  from "pp-demo-mid-1.0-212.noarch" 
} 

샘플 입력은 :

pp-demo-mid-1.0-212.noarch 
pp-1.0-212.noarch 
pp-xx-1.0-212.noarch 

원하는 출력을 :

의미
pp-demo-mid 
pp 
pp-xx 

, 나는 버전 번호 이전의 첫 번째 부분을 구문 분석 할 필요가있다.

+0

정규식의 형식이 매우 불분명합니다. 더 많은 예제를 제공하는 것을 고려하십시오 – jkshah

+0

은 다음을 요구합니다 : 1. echo XXX-1.6.6-5.i386 | awk -F- '{print $ 1}'-> XXX. 2 echo XXX-UU-M-1.4.3-2.noarch.rpm | awk -F- '{print $ 1}'-> XXX,하지만 XXX-UU-M을 받고 싶습니다 –

+1

문제를 업데이트하십시오. 이것은 버전 번호보다 앞선 이름을 의미합니까? – jkshah

답변

3

이와 비슷한? 문자열을 첫 번째 숫자로 나눕니다.

awk -F"-[0-9]" '{print $1}' file 
pp-demo-mid 
pp 
pp-xx 

아니면 x는 숫자 여기

awk -F"-[0-9][.][0-9]" '{print $1}' file 
+0

고맙습니다. 그건 내 필요입니다. 다시 한번 감사드립니다. –

2

이 처음 -XX 후 더 구체적이고으로 나눔이 될 수는 모든 비를 캡처합니다 sed

sed -r 's/([^0-9]+)-.*/\1/' 

([^0-9]+)를 사용하여 시도 숫자가 \1 인 경우

+0

잘 작동합니다. 감사합니다. –

관련 문제