JQ json 값에서 줄바꿈 문자가 아닌 줄바꿈 문자를 인쇄하는 방법
JSON에서 정보를 출력하는 로그가 몇 개 있습니다.탄력적인 검색을 위한 컬렉션입니다.
일부 테스터 및 운영 담당자는 서버의 로그를 읽을 수 있어야 합니다.
다음은 JSON의 예를 제시하겠습니다.
{
"@timestamp": "2015-09-22T10:54:35.449+02:00",
"@version": 1,
"HOSTNAME": "server1.example",
"level": "WARN",
"level_value": 30000,
"logger_name": "server1.example.adapter",
"message": "message"
"stack_trace": "ERROR LALALLA\nERROR INFO NANANAN\nSOME MORE ERROR INFO\nBABABABABABBA BABABABA ABABBABAA BABABABAB\n"
}
기타 등등.
값에서 볼 수 있듯이 \n 문자 시퀀스 대신 Jq를 줄바꿈으로 출력할 수 있습니까?.stack_trace
?
물론이죠!-r
옵션을 지정하면 jq는 문자열 내용을 JSON 이스케이프 문자열 대신 단말기에 직접 인쇄합니다.
jq -r '.stack_trace'
사용하는 데 제약이 없는 한jq
수정(또는 실제로는 "un-json-ify")만 가능합니다.jq
로 출력하다.sed
:
cat the-input | jq . | sed 's/\\n/\n/g'
입력에도 탭이 있는 경우(\t
JSON)의 경우:
cat the-input | jq . | sed 's/\\n/\n/g; s/\\t/\t/g'
이것은 특히 편리할 것입니다.stack_trace
Java stacktrace 행은 다음과 같이 시작됩니다(로그의 소스는 알리지 않았습니다).<tab>at<space>
.
경고: JSON 입력이 다음을 포함하는 의미에서는 당연히 이는 올바르지 않습니다.\\n
는 " " 출력되지만 "n" 출력은 됩니다.정확하지는 않지만 인간이 데이터를 훔쳐보는 데는 충분합니다.그sed
패턴을 더욱 개선하여 (가독성을 희생하면서) 이를 처리할 수 있습니다.
원래 제공된 입력은 그다지 유효한 JSON이 아니며, 원하는 출력이 무엇인지 정확히 알 수 없지만, 다음과 같은 사항이 있을 수 있습니다.이 문서는 현재 버전의 jq(버전 1.5)용으로 작성되어 있지만 jq 1.4에 쉽게 적용할 수 있습니다.
def json2qjson:
def pp: if type == "string" then "\"\(.)\"" else . end;
. as $in
| foreach keys[] as $k (null; null; "\"\($k)\": \($in[$k] | pp)" ) ;
def data: {
"@timestamp": "2015-09-22T10:54:35.449+02:00",
"@version": 1,
"HOSTNAME": "server1.example",
"level": "WARN",
"level_value": 30000,
"logger_name": "server1.example.adapter",
"message": "message",
"stack_trace": "ERROR LALALLA\nERROR INFO NANANAN\nSOME MORE ERROR INFO\nBABABABABABBA BABABABA ABABBABAA BABABABAB\n"
};
data | json2qjson
출력:
$ jq -rnf json2qjson.jq
"@timestamp": "2015-09-22T10:54:35.449+02:00"
"@version": 1
"HOSTNAME": "server1.example"
"level": "WARN"
"level_value": 30000
"logger_name": "server1.example.adapter"
"message": "message"
"stack_trace": "ERROR LALALLA
ERROR INFO NANANAN
SOME MORE ERROR INFO
BABABABABABBA BABABABA ABABBABAA BABABABAB
"
언급URL : https://stackoverflow.com/questions/32715008/jq-how-to-print-newline-and-not-newline-character-from-json-value
'programing' 카테고리의 다른 글
Spring Boot에서 서블릿필터를 등록하지 않도록 합니다. (0) | 2023.03.27 |
---|---|
Oracle 테이블에서 열 이름을 가져오려면 어떻게 해야 합니까? (0) | 2023.03.27 |
왜 JSX 소품은 화살표 기능이나 바인드를 사용하면 안 되는가? (0) | 2023.03.27 |
javascript에서 가져오기 응답이 json 객체인지 확인하는 방법 (0) | 2023.03.27 |
Amazon 로드 밸런서 뒤에서 WordPress HTTPS 문제를 해결하는 방법 (0) | 2023.03.27 |