![Bash에서 특정 행과 특정 열을 선택하는 방법은 무엇입니까? [폐쇄]](https://linux55.com/image/218446/Bash%EC%97%90%EC%84%9C%20%ED%8A%B9%EC%A0%95%20%ED%96%89%EA%B3%BC%20%ED%8A%B9%EC%A0%95%20%EC%97%B4%EC%9D%84%20%EC%84%A0%ED%83%9D%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%ED%8F%90%EC%87%84%5D.png)
예를 들어 이 데이터가 있고 출력을 얻고 싶습니다.
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