rar*_*rgh 9 grep text-processing cut mpd
我正在尝试编写一个 conky 脚本来显示我的 MPD 专辑封面,专辑文件夹中的“folder.jpg”。我目前的计划是使用mpc -f %file%
,它会打印出文件名和路径,然后切出实际的文件名(即最后一个 / 之后的所有内容),并将其用作 conky 图像对象的路径。
我在使用 grep/cut 时遇到了麻烦,特别是因为有些歌曲嵌套在两个文件夹中,而另一些则嵌套在一个文件夹中。(grep -m 1 . |cut -f1 -d /
适用于单文件夹相册)
我该怎么办?有没有我想念的更简单的方法?
Vol*_*gel 10
您可以使用sed
删除其余部分 -以最后一个斜杠开头的所有内容:
mpc -f %file% | head -1 | sed 's:/[^/]*$::'
该模式/[^/]*$
匹配一个斜杠,后跟除斜杠以外的任何字符,直到行尾。它被空字符串替换。
该head -1
忽略下面我们希望线条一些状态输出-但请参阅下面如何不摆在首位普林他们。
如果您不习惯 sed,该命令可能会因为:
使用而显得异常。您之前可能已经看过sed
带有/
as 分隔符的命令,例如's/foo/bar/'
- 我更喜欢使用分隔符:
来提高可读性,因为表达式包含/
自身。或者,我们可以/
在表达式中转义:'s/\/[^\/]*$//'
- 这不会使其更具可读性。
您使用它的方式为您提供mpc
了两个额外的状态行。-q
静音选项关闭所有输出。您需要结合-q
显式打印当前播放文件以获得所需的行,仅此而已:
mpc -q -f %file% current | sed 's:/[^/]*$::'
不是删除以最后一个斜杠开头的所有内容,而是可以在最后一个斜杠之前显式打印所有内容:
mpc -q -f %file% current | sed 's:^\(.*\)/.*$:\1:'
匹配任何后跟 a/
和任何其他字符的字符;它尽可能匹配,以便/
匹配的将是最后一个。