다음 test.txt가 있습니다. 출력을 인쇄하려면 xvf-9c3683ff 명령을 사용하십시오. 하지만 xvf-bcb500df를 출력해야 합니다. 마지막 날짜를 기준으로 합니다.
cat test.txt | awk '{print $2}' s/"//g' | grep xvf | 헤드 -1
테스트.txt
{
"date": "2017-01-30T10:55:46.000Z",
"Id": "xvf-9c3683ff"
},
{
"date": "2017-01-26T12:58:20.000Z",
"Id": "xvf-bcb500df"
},
{
"date": "2017-01-31T18:33:20.000Z",
"Id": "xvf-ee07b28d"
}
출력은 결과 아래에 인쇄되어야 합니다.
xvf-bcb500df
답변1
[
이것이 JSON 형식의 파일이라고 가정하면( ]
시작과 끝이 모두 누락됨),jq
:
$ jq 'sort_by(.date)' data.json
[
{
"date": "2017-01-26T12:58:20.000Z",
"Id": "xvf-bcb500df"
},
{
"date": "2017-01-30T10:55:46.000Z",
"Id": "xvf-9c3683ff"
},
{
"date": "2017-01-31T18:33:20.000Z",
"Id": "xvf-ee07b28d"
}
]
첫 번째 것을 얻으려면 Id
:
$ jq 'sort_by(.date)|.[0].Id' data.json
"xvf-bcb500df"
따옴표 없이 콘텐츠를 얻으려면:
$ jq -r 'sort_by(.date)|.[0].Id' data.json
xvf-bcb500df
작업을 위해 작성된 파서는 구조화된 표준 형식의 데이터를 구문 분석하는 데 사용되어야 합니다. 다음을 포함하여 쉘 스크립트나 명령줄의 여러 일반적인 형식에 대해 미리 만들어진 파서가 있습니다.JSON,XML,CSV다른 사람.
답변2
1단계: 형식 조정:
$ cat data.json | json -ga date Id
2017-01-30T10:55:46.000Z xvf-9c3683ff
2017-01-26T12:58:20.000Z xvf-bcb500df
2017-01-31T18:33:20.000Z xvf-ee07b28d
다음 단계: ID를 정렬하고 인쇄합니다.
cat data.json | json -ga date Id | sort | awk 'NR==1{print $2}'
json 명령줄 도구는 다음 문서에 설명되어 있습니다.http://trentm.com/json/. 당신이 필요로 하는 경우에,
- 노드 설치
- 그리고 sudo npm install -g json
답변3
다음을 시도해 볼 수 있습니다.
| awk '{print $2}' | sed -n '/"/N;s/\n//;s/"//gp' | sort | awk -F, '/xvf/{print $2}' | head -n1
예:
$ echo '{
"date": "2017-01-30T10:55:46.000Z",
"Id": "xvf-9c3683ff"
},
{
"date": "2017-01-26T12:58:20.000Z",
"Id": "xvf-bcb500df"
},
{
"date": "2017-01-31T18:33:20.000Z",
"Id": "xvf-ee07b28d"
}' | awk '{print $2}' | sed -n '/"/N;s/\n//;s/"//gp' | sort | awk -F, '/xvf/{print $2}' | head -n1
xvf-bcb500df
편집 - Python 방법
데이터가 유효한지 확인한 JSON
후 다음 스크립트를 사용할 수 있습니다.
import json
with open('test.txt', 'rt') as file:
data = sorted(json.load(file), key=lambda x: x['date'])
print(data[0]['Id'])