使用sed将正则表达式替换为变量

时间:2019-07-01 09:54:25

标签: bash variables sed

我正在尝试创建一个bash脚本,可以在其中将文件名中的日期替换为当前日期,但是,我无法这样做。

这是我到目前为止所拥有的:

#!/bin/bash

my_file="FILENAME_20170410235908_GTT_DEV_20170410235400_20170410235408_XX_YY.nc"

my_date=`date "+%Y%m%d"`

echo "$my_file" | sed  's/\([0-9]\{12\}\)/"${my_date}"/g'

我正在得到这个:

FILENAME_"${my_date}"08_GTT_DEV_"${my_date}"00_"${my_date}"08_XX_YY.nc

但是,这就是我想要的:

FILENAME_2019070135908_GTT_DEV_20190701235400_20190701235408_XX_YY.nc

我该如何实现?

1 个答案:

答案 0 :(得分:1)

您可以尝试

sed "s/\([0-9]\+\)/${my_date}/g"

单引号不会替换变量数据。 my_date将只有日期。如果还需要时间戳,请从date命令添加时间戳。