2016-09-15 6 views
-1

를 기록 할 추가 그것은 나에게 그렇게 같은 매트에 대한 꽤 프린트 제공 :AWK/SED 파일을 내가 운영하는 qpid 명령을

{ 
"value": { 
    "application": { 
     "connectionState": "Disconnected", 
     "connectionTime": "No connection was established", 
     "linkAttributes": { 
      "ackSettings": { 
       "dataAckEnabled": "true", 
       "dataAckTimeout": "5000", 
       "dataNakRetryLimit": "0", 
       "retransmitDelay": "500" 
      }, 
      "keepAliveSettings": { 
       "keepAliveAckTimeout": "5000", 
       "keepAliveInterval": "30000" 
      }, 
      "logTraffic": "false", 
      "port": "9999", 
      "role": "server" 
     }, 
     "protocol": "Class" 
    } 
}, 
"queueStats": {} 

내가이 출력을하고 quitation 마크뿐만 아니라 브래킷을 제거를 나는 아래의 명령을 사용하여 로그 파일에 추가합니다

^M^M^MendpointApplications:^MApplicationSide:^MconnectionState:Disconnected,^MconnectionTime:Noconnectionwasestablished,^MlinkAttributes:^MackSettings:^MdataAckEnabled:true,^MdataAckTimeout:5000,^MdataNakRetryLimit:0,^MretransmitDelay:500^M,^MkeepAliveSettings:^MkeepAliveAckTimeout:5000,^MkeepAliveInterval:30000^M,^MlogTraffic:false,^Mport:9999,^Mrole:server^M,^Mprotocol:ClassD^M^M,^MqueueStats:^M 

어떻게받을 수 있나요 :

command | sed 's/"//g' | sed 's/{//g' | sed 's/}//g' | sed -e 's/$/\r/g' |awk '!/""/{ORS=(/},/?RS:""); gsub(/[[:blank:]]+/,""); sub(/}$/,"},\n"); print}' |awk '{gsub(/\\n/,"\n")}1' >> app.log 

결과는 다음은 새 행의 로그에 출력을 추가 할 때마다^M 문자를 제거 하시겠습니까?

내 예상 된 결과는 다음과 같습니다 기본적으로

endpointApplications:ApplicationSide:connectionState:Disconnected,connectionTime:Noconnectionwasestablished,linkAttributes:ackSettings:dataAckEnabled:true,dataAckTimeout:5000,dataNakRetryLimit:0,retransmitDelay:500,keepAliveSettings:keepAliveAckTimeout:5000,keepAliveInterval:30000,logTraffic:false,port:9999,role:server,protocol:ClassD,queueStats: 

, 같은 결과는 이전하지만 M 문자 ^없이, 나는 새로운 석회에 매번 명령의 결과를 추가하고 싶습니다.

+0

해당 문자는 매번 새로운 줄에 추가하려고 시도하고 있습니다. 줄 바꿈없이 하나씩 추가하면 문자가 없습니다. –

+3

sed로 JSON을 구문 분석하지 마십시오.'jq'를 사용하십시오. –

+0

감사합니다! 그것을 꺼내서 내가 원하는 결과를 얻었습니다! –

답변

2

sed 명령 s/$/\r/이 주입 중입니다. 그냥하지 마!