我正在尝试使用Sed将前一天的日期替换为当前日期日期来更改文本文件第一行中的日期。
以下是我尝试用来完成此操作的bash脚本中的代码:
YMD=$(date +%Y%m%d)
ODA=$(date -u +%Y%m%d --date="1 days ago")
mv ${HOMEDIR}/${PATH1}/nws_${VAR}_conus_daily_${ODA}.ctl ${HOMEDIR}/${PATH1}/nws_${VAR}_conus_daily_${YMD}.ctl
sed "s/${ODA}/${YMD}/" ${HOMEDIR}/${PATH1}/nws_${VAR}_conus_daily_${YMD}.ctl
URL1=http://water.weather.gov/${VAR}/p_download_new/${Y}/${M}/${D}/nws_${VAR}_conus_${YMD}.nc
wget -P ${HOMEDIR}/${PATH1}/ -N ${URL1}
文本文件中的第一行内容如下:
dset ^grads/data/ahps/nws_precip_conus_20140423.nc
答案 0 :(得分:1)
如果您希望sed更改文件,则必须提供-i
选项,如下所示:
sed -i "s/${ODA}/${YMD}/" ${HOMEDIR}/${PATH1}/nws_${VAR}_conus_daily_${YMD}.ctl
否则sed
只会将更改的文件输出到标准输出。
答案 1 :(得分:0)
使用此:
sed "1s/[0-9]\+\.nc/$(date +%Y%m%d).nc/" file.txt
它将.nc
的第一行file.txt
前的数字替换为
date +%Y%m%d
以所需格式输出当前日期。
功能证明:
file.txt
如下:
dset ^grads/data/ahps/nws_precip_conus_20140421.nc
bla bla 20140421.nc
发出上述命令:
sed "1s/[0-9]\+\.nc/$(date +%Y%m%d).nc/" file.txt
输出:
dset ^grads/data/ahps/nws_precip_conus_20140423.nc
bla bla 20140421.nc
您会看到第一行中的日期仅被当前日期替换。