Извлечение определенной строки текста с помощью grep для использования в conky
Я пытаюсь извлечь каталог текущей воспроизводимой песни в Quodlibet для использования при попытке отобразить обложку альбома в conky.
В текущем файле QL ~/.quodlibet/current
есть строка, которая дает вам полный путь к текущей воспроизводимой песне, но мне нужен только каталог. Есть ли способ, которым я могу игнорировать последнюю часть пути с помощью grep?
Например, если у меня был файл с именем /music/album/03-song.ogg
Я бы хотел, чтобы grep выводил все до 0
(или же 1/2/3/4
для более длинных альбомов).
Я понятия не имею, могу ли я использовать это для того, для чего мне это нужно, но все равно было бы полезно узнать это для дальнейшего использования.
4 ответа
Если current
file содержит действительный путь к файлу, просто получите его имя каталога:
dirname $(< ~/.quodlibet/current)
$(< …)
прочитает файл и заменит его содержимое, как если бы оно былоcat
,
Вы на самом деле не хотите анализировать файл или использовать какие-либо регулярные выражения. Это может сломаться, если имя каталога содержит "0", например. Единственным надежным источником информации для определения каталога является последний слеш, и dirname
так или иначе справляется.
Только потому, что мне нравится sed:) ... блестящее решение love @slhck!
$ echo /music/album/03-song.ogg| sed -r 's@^(.+)/.+$@\1@'
/music/album
Вы можете сделать это, отправив grep
вывод на sed
и используя регулярные выражения, чтобы извлечь информацию, которую вы хотите.
Вы можете прочитать на sed
и его синтаксис регулярного выражения со страницы руководства.