2013-05-24 5 views
0

ncmpcpp의 출력을 구문 분석하여 아티스트 및 트랙 제목을 얻으려고합니다.ncmpcpp의 출력에서 ​​아티스트 및 트랙 정보 구문 분석

ncmpcpp --now-playing의 출력이

(MM:SS) %ARTIST% - %TRACKTITLE% 

예의 형태로 소요

: 나는 제거 할 수있는 방법 리눅스에서 사용 가능한 기존의 배관 도구 (AWK, 나오지 머리, GREP)를 사용하여

(4:46) A Perfect Circle - Imagine 

을 정보는 괄호 안에 있고 나머지는 구문 분석합니까?

awk를 사용해 보았지만 대역폭 이름에 공백이 포함될 수 있으므로 % ARTIST %는 (는) 여러 가지 인수로 간주 될 수 있으므로 효과적이지 않습니다.

답변

1

주 - 출력 문자열의 형식은 기본적으로 호출 할 필요가 있도록 ncmpcpp --now-playing "%a - %t" (또는 유사)를 사용하여 원하는 것을 얻을 수 있습니다.

+0

그게 내가 찾고 있던 바로 그거야! 나는 그것이 논쟁을했다는 것을 몰랐다. 고마워, 선생님! – r3dd1t

0

아티스트 이름에 하이픈이 포함 된 경우,이 실패하지만, 그래서 작가와 제목 사이의 구분 기호 인 하이픈에 의존 아무것도 의지 할

echo "(32:32) Album artist - This is the title - it's hyphenated" | 
    awk 'match($0, /^\([0-9]{1,2}:[0-9]{2}\)\s([^-]*)\s-\s(.*)/, r) {print r[1];print r[2]}' 

출력 :

 
Album artist 
This is the title - it's hyphenated 

EDIT

귀하의 질문에 대한 오해가있을 수 있습니다. 별도의 파일로 아티스트와 제목이 필요하지 않은 경우 필드들, 그냥 시간을 제거하려면이 옵션을 사용

echo "(4:46) A Perfect Circle - Imagine" | sed -r 's/^\([0-9]{1,2}:[0-9]{2}\)\s//' 

출력 : --now 플레잉 추가 매개 변수를

 
A Perfect Circle - Imagine 
+0

답장을 보내 주셔서 감사합니다. 예를 들어 2 줄에 정보를 표시하지만 실제로는 하나 필요합니다. 나는 또한'ncmpcpp' (이것은 질문에 추가 했음)의 실제 결과물로 처리하려고 시도했지만 예제와 함께 작동하지 않습니다. (32:32) 앨범 아티스트를 바꿀 때 - 이것은 (4:46) 완벽한 원 - 상상력으로 제목에 - 하이픈이 찍혔다. – r3dd1t

+0

'print' 명령은 단지 예일뿐입니다. 네가 원하는대로해라. 그것들을'print r [1] r [2]'로 대체 할 수 있습니다. 분 필드에서 한 자리 숫자를 처리하도록 정규식을 업데이트했습니다. 이것은'[0-9] {1,2} : [0-9] {2}'부분입니다. 즉, 콜론과 2 자리 숫자가 뒤 따르는 1 또는 2 자리입니다. –

+1

건배, 도움 주셔서 감사합니다! – r3dd1t