2012-03-12 5 views
4

내 로그 파일에는 줄마다 하나의 json 객체가 있습니다. 나는 지금은 연속 출력tail -F 및 json 결합

tail -F mylog.log | json -a field1 field2 

을하고 싶은 [JSON] [1]

cat mylog.log | json -a field1 field2 

를 통해 사람이 읽을 수있는 출력을 얻기 위해 사용합니다. 그러나 이것은 작품으로 보이지 않는 것 같습니다. 쉘은 단순히 멈 춥니 다. &|에서 까지 버퍼링 문제가 발생하지 않는 경우 출력은 인 경우에만 cat으로 실행됩니다.

{"field1": entry1a, "field2": entry2a, "field3": entry3a} 
{"field1": entry1b, "field2": entry2b, "field3": entry3b} 

어떤 제안 :

mylog.log

은 다음과 같습니다?

[1] https://github.com/trentm/json

+0

'& |'? 어떤 종류의 껍질입니까? –

+0

'zsh'이지만, 내가 생각한대로하지 않는다고 생각합니다. – osdf

+0

https://bitbucket.org/bartswen/bsonify/ –

답변

10

그것은 jsonfirst loads the whole stdin into a buffer and only then processes the data처럼 보이는,하지만 여전히 라인의 각각을 호출하여 스트림 처리를 달성 할 수있을 로그 파일이 같은 추가해야합니다

tail -F mylog.log | while read line; do echo "$line" | json -a field1 field2; done 
+0

'echo "$ line"을보고 싶을 수도 있습니다. –

+0

@KarolyHorvath 좋은 지적. 결정된. –

+1

나는 이스케이프 된 백 슬래시가있는 json을 가지고있다. class : "path \\ to \\ class". 이것들을 보존하기 위해서, read 문장을 -r 행으로 변경해야만했습니다. – dastra