0

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

的输出ncmpcpp --now-playing形式为

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

例子:

(4:46) A Perfect Circle - Imagine

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

我曾尝试使用 awk,但它无效,因为乐队名称可以包含空格,因此可以将 %ARTIST% 视为多个参数。

4

2 回答 2

1

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

于 2013-05-28T00:01:50.710 回答
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]}'

输出:

专辑艺术家
这是标题 - 它是连字符的

编辑

我可能误解了您的问题 - 如果您不需要单独字段中的艺术家和标题,只需使用它来剥离时间:

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

输出:

一个完美的圆圈 - 想象一下
于 2013-05-24T05:19:19.710 回答