패턴 배열에서 하위 문자열 찾기

패턴 배열에서 하위 문자열 찾기

확장자가 다음과 같은 파일이 있습니다.

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

확장 목록이 포함된 배열이 있습니다.

exts=(sh pl py)

파일 이름에서 exts의 확장자를 제거하고 싶습니다. 그것을 할 수 있는 비결이 있습니까? 나는 이런 종류의 것을 생각하고 있습니다.

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

분명히 작동하지 않습니다.

답변1

exts나는 당신의 배열 에서 패턴을 구성한 다음 다음을 사용합니다 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"

관련 정보