Acho que sua pergunta é:
Eu tenho uma variável bash que contém uma string; Eu gostaria de dividi-lo em duas partes, antes e depois da string "/ "
.
Se sim, aqui está uma solução básica:
track="Judy Garland/ Somewhere Over the Rainbow"
title="${track#*/ }"
artist="${track%%/ *}"
A sintaxe #
significa "Sem o prefixo mais curto que corresponde a ...". A sintaxe %%
significa "Sem o maior sufixo correspondente ...". (Da mesma forma, ##
teria sido o prefixo mais longo e %
sufixo mais curto.) O padrão é um bash ordinário (ou um bash bash estendido se shopt -s extglob
estiver em vigor). Não é uma expressão regular.
Se o padrão não corresponder, a string será retornada sem modificações e você provavelmente deverá verificar essa condição, especialmente se não tiver certeza de que haverá um espaço após a barra.
A propósito, por que você está usando ls "$i"
? Certamente isso não é diferente do valor de $i
; você poderia muito bem ter usado echo
ou uma "string aqui":
sed '# some sed magic' <<<"$i"