2014-11-17 2 views
0
$ inxi -xxxw 
Weather: Conditions: 23 F (-5 C) - Scattered Clouds Wind: From the West at 15 MPH Humidity: 53% 
     Pressure: 29.89 in (1012 mb) Wind Chill: 10 F (-12 C) 
     Location: Chicago IL (USA) Altitude: 184 ft 
     Time: November 17, 11:25 AM CST (America/Chicago) Observation Time: November 17, 10:53 AM CST  

1) 위의 사항은 지역 날씨에 대한 터미널 명령입니다.conky의 날씨에 대해 sed

$ inxi -xxxw | sed 's/Co/\nCo/;s/Wind:/\nWind:/;s/Hu/\nHu/;s/Pr/\nPr/;s/Wind Chill/\nWind Chill/;s/Loc/\nLoc/;s/Al/\nAl/;s/Time:/\nTime:/;s/Ob/\nOb/'|sed -r 's/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g'|sed '/^[ \t]/d' 
Weather: 
Conditions: 23 F (-5 C) - Scattered Clouds 
Wind: From the West at 15 MPH 
Humidity: 53% 
Pressure: 29.89 in (1012 mb) 
Wind Chill: 10 F (-12 C) 
Location: Chicago IL (USA) 
Altitude: 184 ft 
Time: November 17, 11:31 AM CST (America/Chicago) 
Observation Time: November 17, 10:53 AM CST 

2) 위의 그림은 conky에서 수직 표시를위한 sed 명령입니다.

12Weather: 12 
Conditions 28 F (-2 C) - Mostly Cloudy 12Wind From the WNW at 14 MPH 12 
Humidity 69% 
12   12 
Pressure 29.94 in (1014 mb) 12 
Wind Chill 17 F (-8 C) 

3) 위의 결과는 conky.conf 파일에서 수직 표시 명령 (2)이 실행 된 결과입니다.

질문 (3)을 (2)처럼 보이게하려면 어떻게해야합니까? 여기에 대한 정보를 얻을 수 없습니다.

+0

당신이 달성하려고하는거야? –

+1

이것은 귀하의 질문에 대답하지 않지만 빠른 sed 팁입니다 :'&'변수는 전체 일치 문자열을 포함합니다. 's/Co/\ nCo /; '타입 대체는's/Co/\ n & /;'로 단순화 될 수 있습니다. –

+0

왜 출력을 3으로 표시 하시겠습니까? 데이터가 누락 된 것 같습니다. 주위에 흩어져있는'12'가 무엇입니까? # 2를 사용하여 원하는 출력을 얻을 수있어서 기쁩니다. 최종 요구 사항에 어떻게 사용하는지 알아 내려고 노력하십시오. 행운을 빕니다. – shellter

답변

0

아마도 conky의 구성 파서는 sed 명령에서 많은 특수 문자를 "먹습니다". 정말로 그것이 문제라면 sed 인터프리터 스크립트를 대신 사용할 수 있습니다.

아래의 내용으로 파일 /usr/local/bin/inxi2conky을 만들고이를 실행합니다

#!/bin/sed -rf       
# Remove leading whitespace 
s/^[ \t]+// 
# Insert linefeeds in front of keys 
s/Co|Wind|Hu|Pr|Loc|Al|^Time|Ob/\n&/g 
# Remove resulting extra leading linefeeds 
s/^\n// 

을 그리고 conky.conf이 추가 :

inxi -xxxw | /usr/local/bin/inxi2conky 
+0

위의 (3)과 같이 conky 디스플레이에서 여전히 잘못된 출력을 볼 수 있습니다. – patrick

+0

내가 언급했듯이 이는 문제의 가능한 원인 일뿐입니다. 전체 파이프 라인을 쉘 스크립트에 넣고 conky에서 호출 할 수 있습니다. – SzG