Extraindo linha específica de texto com grep para uso em conky

0

Estou tentando extrair o diretório da música que está tocando no Quodlibet para usar na tentativa de exibir o trabalho artístico do álbum em conky.

No arquivo atual da QL, ~/.quodlibet/current , há uma linha que fornece o caminho completo da música atualmente sendo reproduzida, mas eu só preciso do diretório. Existe uma maneira que eu possa ignorar a última parte do caminho com grep?

Por exemplo, se eu tivesse um arquivo chamado /music/album/03-song.ogg , eu só queria que o grep emitisse tudo antes do 0 (ou 1/2/3/4 para álbuns mais longos).

Eu não tenho ideia se posso usar isso para o que eu preciso, mas ainda seria útil saber para referência futura.

    
por dgz 09.05.2013 / 21:58

4 respostas

2

Se o arquivo current contiver um caminho válido para um arquivo, basta obter o nome do diretório:

dirname $(< ~/.quodlibet/current)

O $(< …) lerá um arquivo e substituirá seu conteúdo como se fosse cat .

Você não quer realmente analisar o arquivo ou usar expressões regulares. É provável que isso seja interrompido se o nome do diretório contiver um "0", por exemplo. A única fonte confiável de informações para determinar o diretório é a última barra, e dirname lida com isso de qualquer maneira.

    
por 09.05.2013 / 22:32
0

Você pode fazer isso canalizando a saída grep para sed e usando expressões regulares para extrair as informações desejadas.

Você pode ler em sed e sua sintaxe de expressão regular em sua página de manual.

    
por 09.05.2013 / 22:12
0

Só porque eu gosto de sed :) ... a brilhante solução do amor @ slhck!

$ echo /music/album/03-song.ogg| sed -r 's@^(.+)/.+$@@'
/music/album
    
por 10.05.2013 / 02:35
0
quodlibet --print-playing "<~dirname>"
    
por 11.05.2013 / 12:23