Você pode usar sed
para remover o restante - tudo começando com a última barra :
mpc -f %file% | head -1 | sed 's:/[^/]*$::'
O padrão /[^/]*$
corresponde a uma barra, seguida por qualquer caractere, exceto barra, até o final da linha. É substituído pela string vazia.
O head -1
ignora alguma saída de status seguindo a linha que queremos - mas veja abaixo como não prendê-los em primeiro lugar.
Caso você não esteja acostumado a sed, o comando pode parecer incomum por causa do :
usado. Você pode ter visto os comandos sed
com /
como separador antes, como 's/foo/bar/'
- prefiro usar o separador :
para legibilidade, pois a expressão contém /
em si. Alternativamente, poderíamos escapar do /
na expressão: 's/\/[^\/]*$//'
- que não o torna mais legível.
A maneira como você o usa com mpc
fornece duas linhas de status adicionais. A opção -q
para quiet desliga toda a saída. Você precisa combinar -q
com a impressão explícita do arquivo atual para obter a linha que você precisa, e nada mais:
mpc -q -f %file% current | sed 's:/[^/]*$::'
Em vez de remover tudo a partir da última barra , pode-se imprimir explicitamente tudo antes da última barra :
mpc -q -f %file% current | sed 's:^\(.*\)/.*$::'
Corresponde a quaisquer caracteres que sejam seguidos por /
e quaisquer outros caracteres; Ele corresponde o máximo possível, para que o /
correspondido seja o último.