2014-03-13 8 views
0

두 문자열이 즉시 일치하면 다음 단어 집합을 인쇄하려면 awk -F 명령을 사용하고 있습니다.awk -F 첫 번째 일치 패턴을 기반으로 인쇄하는 명령

검색 키워드 중 하나가 변수에서 반복되는 경우 마지막으로 일치하는 키 패턴을 사용합니다. 하지만 첫 번째로 일치하는 패턴이 필요합니다.

편집 : 예를 아래에, 내가 어떤 라인에서 제시 또는 단어로 분할 할 수 CREATETABLE 키워드를 검색 할 필요가있다. CREATE & TABLE 키워드와 일치하는 것이 무엇이든지간에 다음 요소를 아래와 같이 인쇄하십시오.

a="Hello I have a CREATE set or multiset TABLE as TABLE (uid, cid, mid)" 
echo "$a" | awk -F"CREATE.*TABLE" '{print $2}' 
returns: as (uid, cid,mid) 

그러나 예상 출력은

처리 regexps '에가 가장 왼쪽을 찾아 표 (UID, CID, MID)

+0

? 'awk -F "CREATE. * TABLE"'이 방법은 두 번째 것과'('. – fedorqui

+0

@ fedorqui : 내 질문을 편집했습니다 .2 번째 공간도 올 수 있습니다. – logan

+0

그럼' -F "CREATE [az] * TABLE"'. – fedorqui

답변

2

대부분의 도구로 가장 길게 일치하는 문자열. 귀하의 경우 : 당신이 입력 라인에 두 번 단어 TABLE이 있기 때문에 결과는 가능한 가장 긴 일치하므로

a="Hello I have a CREATE set TABLE as TABLE (uid, cid, mid)" 
echo "$a" | awk -F"CREATE.*TABLE" '{print $2}' 

, 당신의 정규 표현식의 표는 두 번째 일치합니다. awk에는 정규 표현식 매칭을위한 동작을 변경할 방법이 없으며, 다른 도구는 가장 길게 일치하는 대신에 가장 짧은 것을 요구할 수있는 옵션을 가질 수 있지만 awk는 그렇지 않습니다. 당신이 대신 작성하는 것을 의미 할 수 있습니다 무엇

은 다음과 같습니다

당신은 -F에서 "TABLE"후 공간을 추가하면 어떻게
echo "$a" | awk -F'CREATE +[^ ]+ +TABLE' '{print $2}' 
as TABLE (uid, cid, mid) 
+0

예. 왜 downvote? –

+1

당신은 gawk을 찾을 수 없기 때문에 대답을 downvoted ??? 다른 awk를 사용하십시오. 좋은 슬픔. –

+0

$ a 변수에 여러 줄이 있습니다. 지금 아무 것도 반환하지 않는다. – logan

관련 문제