Bashで特定の行と特定の列を選択するには? [閉鎖]

Bashで特定の行と特定の列を選択するには? [閉鎖]

たとえば、このデータがあり、出力を取得したいと思います。

serNo:  ASDFAFDAFD3223
                         profileType": "Asset Tag: profileValue": "12341233
corrected ouput as serNo:  ASDFAFDAFD3223
                Asset Tag: 12341233
_______________________________________________________________________
{
                "assetTag": null,
                "category": "Switch",
                "children": [
                    {
                        "profileType": "Asset Tag",
                        "profileValue": "12341233"
                    }
                ],
                "customerIpn": "234-234324-234",
                "loc": "23",
                "mfgPartNo": "ADSF-32C-ASDF",
                "parentSn": "APLADFKJAOFHKNFDSOIH",
                "partNo": "JPR-ADF-32C-ASDF",
                "position": "23",
                "serNo": "ASDFAFDAFD3223",
                "skuNo": 4125056,
                "subLoc": "1",
                "usageType": null,
                "vendor": "ASDFADSF NETWORKS (U.S.) INC"
            } 

私は次のことを試しました

 grep -e Switch -A4 | awk -F":" '/"profileValue"/{print $2}'
 "12341233"
 "ASDFKHKSHDF980"
 "ASDFDSF8689087"
 "SADFASIYYI86"
 "KHDSFKAYUSF86"
 "87698234"
 "97823407"

しかし、Serno、Asset Tagなどの予想データは取得できません。

答え1

JSONファイルを処理する最良の方法はjq

その後、ファイルをパイピングすると、jq '.serNo'次のようになります。

"ASDFAFDAFD3223"

そしてjq '.children[].profileValue'あなたに以下を提供します:

"12341233"

プレフィックスを追加したい場合は、両方のコマンドの出力を簡単に処理でき-rます"sed

関連情報