从ncmpcpp的输出中解析艺术家和曲目信息

时间:2013-05-24 03:58:42

标签: bash piping

我正在尝试解析ncmpcpp的输出以获取艺术家和曲目标题。

ncmpcpp --now-playing的输出采用

的形式
(MM:SS) %ARTIST% - %TRACKTITLE%

示例:

(4:46) A Perfect Circle - Imagine

使用linux上提供的传统管道工具(head,sed,awk,grep)如何摆脱括号中的信息并解析其余部分?

我尝试过使用awk,但是因为乐队名称可以包含空格而无效,所以%ARTIST%可以被认为是几个参数。

2 个答案:

答案 0 :(得分:1)

注意 - 现在播放需要额外的参数 - 输出字符串的格式,所以你基本上需要调用ncmpcpp --now-playing "%a - %t"(或类似的)来获得你想要的东西。

答案 1 :(得分: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

修改

我可能误解了你的问题 - 如果你不需要在不同领域中的艺术家和头衔,只需用它来剥夺时间:

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

输出:

A Perfect Circle - Imagine