grep 정렬 열

grep 정렬 열

다음 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'])

관련 정보