Group JSON by Key

jq -sc 'group_by(.keyNameA)[] | {keyNameA: .[0].keyNameA, keyNameB: map(.keyNameB)}'

Optionally, add sort

jq -sc 'group_by(.keyNameA)[] | {keyNameA: .[0].keyNameA, keyNameB: map(.keyNameB) | sort}'

Example

Data

{"ip":"24.213.251.77","altName":"a.a"}
{"ip":"24.213.251.77","altName":"b.b"}
{"ip":"126.126.126.126","altName":"c.c"}
{"ip":"126.126.126.126","altName":"f.f"}
{"ip":"126.126.126.126","altName":"shoe.box"}
{"ip":"126.126.126.126","altName":"aaa.aaa"}

Command without sort

└─$ cat data | jq -sc 'group_by(.ip)[] | {ip: .[0].ip, altNames: map(.altName)}'
 
{"ip":"126.126.126.126","altNames":["c.c","f.f","shoe.box","aaa.aaa"]}
{"ip":"24.213.251.77","altNames":["a.a","b.b"]}

Command with sort

└─$ cat data | jq -sc 'group_by(.ip)[] | {ip: .[0].ip, altNames: (map(.altName) | sort)}'
{"ip":"126.126.126.126","altNames":["aaa.aaa","c.c","f.f","shoe.box"]}
{"ip":"24.213.251.77","altNames":["a.a","b.b"]}