파일에서 elapsedTime 속성 값을 추출하고 싶습니다.
녹음해
{"realm":"/test","transactionId":"9e26c614","elapsedTime":17,"elapsedTimeUnits":"MILLISECONDS","_id":"9e26c6asdasd"}
내가 가지고 있는 파일의 단위는 GB이고 10000보다 큰 값을 얻고 싶습니다.
grep을 시도했지만 콜론 때문에 grep이 작동하지 않습니다.
grep -wo --color 'elapsedTime' fileName -> this just prints attribute names
grep -w --color "elapsedTime" fileName -> this just highlights the attribute.
답변1
데이터는 JSON 형식이므로 이 형식을 이해하는 파서를 사용하는 것이 가장 좋습니다.
elapsedTime
그러면 파일의 JSON에서 값이 선택됩니다./tmp/data
jq .elapsedTime /tmp/data
17
그러면 10000보다 큰 값만 선택됩니다.
jq '.elapsedTime | select(. > 10000)' /tmp/data
실제로 작동하지 않으면 빌드하는 것을 고려하십시오 jq
. 그러나 이를 위해서는 각 행에 하나의 레이블과 관련 값만 sed|awk
있어야 합니다 . elapsedTime
다른 주의사항이 있을 수 있어 별로 추천하지는 않지만, 여기서 절박함을 느끼신다면 그게 전부입니다.
sed -En 's/^.*"elapsedTime":\s*"?([0-9]+).*$/\1/p' /tmp/data |
awk '$1 > 10000'
후속 질문에 답하십시오(논평), 두 요소를 선택하려면 개체에서 개별 요소를 필터링한 다음 원하는 요소를 표시해야 합니다.
jq -r 'select (.elapsedTime > 10000) | [ .elapsedTime, .transactionId ] | @tsv ' /tmp/data