일치하는 문자열로 고유한 행 가져오기

일치하는 문자열로 고유한 행 가져오기

다음과 같이 반복되는 ID를 포함하는 JSON 형식의 레코드 텍스트 파일이 있습니다.

{"ID":"93" , "ST":[42,77,51]}
{"ID":"21" , "ST":[43,4]}
{"ID":"94" , "ST":[65,11,4]}
{"ID":"93" , "ST":[42,77,51,29,63]}
{"ID":"73" , "ST":[21,20]}
{"ID":"94" , "ST":[65,11,4]}
{"ID":"77" , "ST":[87]}

중복 항목을 필터링하고 항상 첫 번째 일치 항목을 유지하려고 합니다. ID가 동일한 레코드의 경우 ST 필드는 동일하거나 다를 수 있습니다.

출력은 다음과 같습니다.

{"ID":"93" , "ST":[42,77,51]}
{"ID":"21" , "ST":[43,4]}
{"ID":"94" , "ST":[65,11,4]}
{"ID":"73" , "ST":[21,20]}
{"ID":"77" , "ST":[87]}

비슷한 질문이 올라왔습니다여기이지만 이 경우 편집 중인 데이터 파일은 쉼표로 구분된 파일입니다. 여기서는 JSON 데이터를 처리하고 있으며 목표는 동일한 ID 값(정규식 일치 가능)을 가진 행을 찾고 최신 행을 유지하는 것입니다. awk, sed 또는 순수 명령줄 도구를 사용하여 이 문제를 해결하는 방법을 아는 사람이 있습니까?

답변1

awk첫 번째 필드(공백으로 구분된 필드)에서만 일반적인 중복 제거 기술을 사용할 수 있습니다 .

awk '!count[$1]++'

관련 정보