从变量的开头/结尾剥离文本

时间:2015-02-16 13:01:52

标签: arrays bash

我有一个包含备份文件列表的数组,我想通过并删除前导/ path / to / file /和尾随_date_stamp.tar.gz我的代码可以去除前导路径文件,如果我把它设置为剥离.tar.gz它可以工作,但如果我试图剥离它失败的日期。所以我想作为一个例子:

/path/to/file/backup_domain1.com_02_16_2015.tar.gz

并留下:

domain1.com

从开头删除:/path/to/file/backup_ 这从末尾删除:_02_16_2015.tar.gz但显然因为它们是日期戳,所以整数会有所不同。

我的代码段:

# strip leading path/to/file :
$bubasedir=/path/to/file
buarray=( "${buarray[@]#"$bubasedir/backup_"}" )
buarray=( "${buarray[@]%".tar.gz"}" )

这会剥离.tar.gz,但我也需要删除日期。

1 个答案:

答案 0 :(得分:4)

使用与日期表达式匹配的表达式,就像对前缀一样。假设域名不能包含下划线(根据DNS规范,但有时违反内部域和特殊域名,如_dkim),

buarray=( "${buarray[@]%%_*}" )

%%表示要修剪最长的匹配,_*匹配从下划线开始的所有内容。 ("${buarray[@]%_*}"将从最后一个下划线修剪。)