2014-10-30 3 views
0

안녕하세요, 내 awk 스크립트가 rw=none에있는 입력 파일의 모든 줄을 무시하려고하지만 다른 모든 rw=*은 여전히 ​​일치해야합니다.awk에서 사례를 무시하는 방법?

나는이 코드를 시도하지만, 문자열이

내 시도와 일치하는 경우 나 전체 라인을 무시하지 않기 때문에이 작동하지 않습니다

match($0,/(rw=[^,]*)/){ 
    !/rw=none/ 
    n=split(substr($0,RSTART+3,RLENGTH-3),N,/:/) 
    for(i=1; i<=n; i++)print '$NETAPP_ID', vFiler, $1, N[i]; 
} 

예 출력 :

/vol/lnxplmulhall 172.17.10.78 
/vol/lnxplmulhall sfilerp01.os.net 
:
/vol/lnxpeayh -sec=sys,rw=none 
/vol/lnxplmulhall -sec=sys,rw=172.17.10.78:sfilerp01.os.net 

는 출력이 바랬다

단지 문자열을 무시하고, 거기에 rw=none이있는 모든 라인을 무시해야하는 코드는

+1

IGNORECASE는 대소 문자를 무시합니다. 샘플 입력과 원하는 출력을 제공하십시오. – fedorqui

+0

IGNORECASE를 BEGIN 블록에 넣으려고 시도하십시오 – ghostdog74

+0

예를 들어 편집했습니다 – howdoesthiswork

답변

2
/rw=none/ {next} 
match($0, /rw=([^,]*)/, m) { 
    n = split(m[1], N, /:/) 
    for (i=1; i<=n; i++) print '$NETAPP_ID', vFiler, $1, N[i]; 
} 

주의 내가 match 정규식에서 괄호를 변경하는 방법 충분하지? 이제 rw 값을 추출하기 위해 substr 함수가 필요하지 않습니다.

+0

감사합니다. 정말 도움이됩니다. – howdoesthiswork

관련 문제