要获取正在播放的当前歌曲(使用DBus ),我使用以下命令:
dbus-send --print-reply --session --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Get string:'org.mpris.MediaPlayer2.Player' string:'Metadata'
现在,下面的命令的输出如下所示:(为了清楚起见,简化了)
变体数组[
字典条目(
string“xesam:艺术家”
变体数组[
string“黑钥匙”
]
)
字典条目(
string“xesam:title”
变体string“给你的心”
)
]
输出有点长,我想从标题,艺术家等parsing它的具体价值。
谷歌search表示, 变种是一个stream行的数据types在组件对象模型中使用,所以我得到的是比使用sed / awk获取值更好的方法 。 那么,我该如何去做呢?
狂暴完成Maven逃脱冒号
Linux sedreplacestring – 有人可以解释这个错误?
从工作目录运行UNIX程序?
wget:下载的文件名
从python运行代码具有不同于bash的权限?
如何将linux命令输出存储到puppet中的一个variables中
安装cygwin后Git Bash破碎
java Runtime.getRuntime()。exec()无法运行命令
尝试这个
awk ' /string *"xesam:artist/{ while (1) { getline line if (line ~ /string "/){ sub(/.*string "/,"artist:",line) sub(/".*$/,"",line) print line break } } } /string *"xesam:title/{ while (1) { getline line if (line ~ /string "/){ sub(/.*string "/,"title:",line) print line break } } } ' variantArraySample.txt
给出输出
artist:The Black Keys title:Give Your Heart Away
这假设输入之间总是至少有一个线差,即
string "xesam:title" variant string "Give Your Heart Away"
也就是说,如果你的数据全部卷成一行,那么就需要更多的逻辑了
string "xesam:title" variant string "Give Your Heart Away"
(例如),将需要更改上述脚本。
让我知道如果你需要帮助进一步格式化您的需要输出。
我希望这有帮助。
下面的作品不管是什么顺序“标题”或“艺术家”进来。唯一的限制是,它看到:title ,包含string的下一行必须是标题字符串; 那线路距离多远并不重要。 同样的艺术家
awk ' /:artist/{a=1;next} /:title/{t=1;next} a && /string/{ sub(/^.*string /,"") artist=$0 a=0; next } t && /string/{ sub(/^.*string /,"") title=$0 t=0;next } END{ printf("artist:%sn title:%sn",artist,title) }'
产量
artist:"The Black Keys" title:"Give Your Heart Away"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。