반복되는 패턴에서 두 개의 일치 항목 검색

반복되는 패턴에서 두 개의 일치 항목 검색

두 개의 반복 패턴에서 일치 항목을 검색하는 방법: mappedname아래 텍스트의 값은 무엇입니까?

MapName:abc
someDiffName=someDiffValue
x=3
y=6
NeedyMappedName=NeedyMappedValue
.
.
Flag=true

grep "MapName\|NeedyMappedName" fileName

awk출력 에서 실행 하면 grep모든 행에 적용되므로 예상한 결과가 제공되지 않습니다.

내가 얻고 싶은 결과는

abc,NeedyMappedValue

'를 실행하면 grep "MapName\|NeedyMappedName" fileName필요한 두 줄이 제공됩니다. awk -F ":" '{print $2}'필요한 값을 추출하는 데 이를 사용할 때 필터링된 grep 출력에서 ​​두 번째 필수 일치 항목을 추출 abc할 수 없습니다 . 두 번째 행에서 다른 패턴으로 패턴을 실행하여 이를 달성할 NeedyMappedValue수 있는 방법이 있습니까 ?awk

답변1

나는 이것이 당신이 기대하는 것이라고 생각합니다 :

grep "MapName\|NeedyMappedName" fileName | awk -F: '
/MapName/ {printf "%s,",$2}
/NeedyMappedName/ {gsub("NeedyMappedName=","");printf "%s\n",$1}'

편집: 불필요한 grep 제거(Craig Sanders 덕분에)

 awk -F: '
/MapName/ {printf "%s,",$2}
/NeedyMappedName/ {gsub("NeedyMappedName=","");printf "%s\n",$1}' fileName

awk의 추가 사용(Solaris에서는 nawk):

awk FS=":|=" '
/MapName/ {printf "%s,",$2}
/NeedyMappedName/ {printf "%s\n",$2}' fileName

관련 정보