繰り返しパターンで2つの一致を検索する

繰り返しパターンで2つの一致を検索する

2つの繰り返しパターンで一致を検索するには: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必要な2行が提供されます。awk -F ":" '{print $2}'必要な値を抽出するために使用すると、フィルタリングされたgrep出力から2番目の必須一致を抽出abcできません。 2行目から別のパターンでパターンを実行してこれを達成する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

おすすめ記事