linux shell编程 当前系统日期替换某一个日期

a=`date+%y%m%d` 获取时间
sed -i "s/b/a" 1.sh
我想要两个变量一个a获取当前日期格式为20131121还要一个变量b存上回获取的系统日期如20131018
用命令替换1.sh文件中所有的20131018为20131121 并将b中也改为20131121 以备下次用

应该怎样写

不过此命令没有改变源文件,可以将命令输出到另一个文件中。
这里认为8个数字的都是日期,如果有不是日期的情况,需要更改正则表达式进行排除。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-21
[root@-xl ~]# sed -i "s/$a/$b/g" 1.sh

追问

您知不知道 a=`date +%y%m%d` 我输出的日期是131121 我想要20131121 怎么改呢谢谢

本回答被提问者采纳
第2个回答  2013-11-21
a=`date +%y%m%d`
sed -i 's/20131018/$a' 1.sh追问

您知不知道 a=`date +%y%m%d` 我输出的日期是131121 我想要20131121 怎么改呢谢谢

追答

把y改成大写

date +%Y%m%d

第3个回答  2013-11-21
#!/bin/sh
#modify_date.sh

if [ ! -f lastdate.txt ];then
date +%Y%m%d > lastdate.txt
exit 1;
fi

today=`date +%Y%m%d`
lastdate=`cat lastdate.txt`

sed -i "s/${lastdate}/${today}/g" 1.sh
echo ${today}> lastdate.txt
相似回答