
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