Localizar substring de uma matriz de padrões

1

Eu tenho um arquivo com extensões:

f1=f1.e1.e2.e3.sh.pl.cpp

Eu tenho uma matriz contendo uma lista de extensões:

exts=(sh pl py)

Eu quero remover as extensões em exts do nome do arquivo. Existe um truque para fazer isso, estou pensando em algo desse tipo:

${f1%.${exts[@]}}

Obviamente não funciona.

    
por kaligne 20.10.2016 / 12:23

1 resposta

0

Gostaria de construir um padrão a partir do array exts e usar sed :

f1=f1.e1.e2.e3.sh.pl.cpp
exts=(sh pl py)


function array_to_regex_alts() { # joins the array elements by \|
    echo -n "$1"; shift; printf "\|%s" "$@"
}

pattern="\.\($(array_to_regex_alts ${exts[@]} )\)"

echo $f1 | sed "s/$pattern//g"
    
por 20.10.2016 / 13:30