我有一个包含3个元素的bash数组,我需要从所有元素中删除前X个数字字符,并从所有元素中删除最后Y个字符。如何实现这一目标。示例如下:
echo ${array[@]}
random/path/file1.txt random/path/file2.txt random/path/file3.txt
我希望这个数组成为
echo ${array[@]}
file1 file2 file3
如何实现这一目标?
答案 0 :(得分:1)
这将是一次性的:
$ a=( "/path/to/file1.txt" "path/to/file2.txt" )
$ basename -a "${a[@]%.*}"
file1
file2
Offcourse,可以包含在$()中,以便分配给变量。
答案 1 :(得分:0)
只需一步就无法做到这一点;但是,您可以先删除前缀,然后删除后缀。
array=( "${array[@]##*/" ) # Remove the longest prefix matching */ from each element
array=( "${array[@]%.*}" ) # Remove the shortest suffix match .* from each element
答案 2 :(得分:-1)
你仍然可以在那里使用基本的字符串操作:
echo ${array[@]##*/}
或者,将它分配给数组:
array=(${array[@]##*/})