繁体   English   中英

在Bash中删除数组中每个元素的开头和结尾

[英]Remove Beginning And End Of Each Element In Array In Bash

我有一个包含3个元素的bash数组,我需要从所有元素中删除第一个X数字字符,并从所有元素中删除最后一个Y数字字符。 如何做到这一点。 下面的例子:

echo ${array[@]}
random/path/file1.txt random/path/file2.txt random/path/file3.txt

我希望这个数组成为

echo ${array[@]}
file1 file2 file3

如何做到这一点?

这将与一枪:

$ a=( "/path/to/file1.txt" "path/to/file2.txt" )
$ basename -a "${a[@]%.*}"
file1
file2

偏离路线,可以将其括在$()中以便分配给变量。

一步之遥是不可能的。 但是,您可以先删除前缀,然后删除后缀。

array=( "${array[@]##*/" )  # Remove the longest prefix matching */ from each element
array=( "${array[@]%.*}" )  # Remove the shortest suffix match .* from each element

您仍然可以在此处使用基本的字符串操作:

echo ${array[@]##*/}

或者,将其分配给数组:

array=(${array[@]##*/})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM