linux shell 用什么命令可以修改脚本中全部日期为当前系统日期?

假设脚本名为test,其内容为:
cccccc./backup/20140219/aaa_20140813_aaa.a
/backup/20140813/aaa_20140813_aaa.a
/backup/20120525/aaa_20140813_aaa.a
/backup/20130612/aaa_20140813_aaa.a
/backup/20110119/aaa_20140813_aaa.a

现在想用一个命令直接把test脚本内容中的所有日期修改为当前系统日期,如何修改,当前系统日期可以用调用$(date +"%Y%m%d")。求各路大侠们给新手一个方法,谢谢。
各位,我可能没说清楚,我的想法是用命令去修改,不是用vi编辑器,脚本里面唯一要求就是修改这些日期为当期系统日期,但是这些已有的日期又都不是固定的日期,上面这段我只是举了个例子!

不过此命令没有改变源文件,可以将命令输出到另一个文件中。

这里认为8个数字的都是日期,如果有不是日期的情况,需要更改正则表达式进行排除。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2021-01-09
1、你是要修改test为当前时期,还是想将脚步的结果修改为当前日期
2、如果修改结果可以定义个变量
#!/bin/sh
ymd=`date +%Y%m%d`

cccccc./backup/${ymd}/aaa_${ymd}_aaa.a
/backup/${ymd}/aaa_${ymd}_aaa.a
/backup/${ymd}/aaa_${ymd}_aaa.a
/backup/${ymd}/aaa_${ymd}_aaa.a
/backup//${ymd}/aaa_${ymd}_aa.a
3、如果仅仅修改test可以用vi或sed追问

脚本已经固定了的,我现在是要用命令去修改这个test脚本中的日期(该日期不是固定的,但都是年月日)为当前系统日期,要求是不用VI编辑器,sed命令如何修改该脚本?

追答

如果只是修改20140813:
#!/bin/sh

yesterday=`date -d yesterday +%Y%m%d`
today=`date +%Y%m%d`
sed -i "s/${yesterday}/${today}/" test

追问

不只是20140813呢,脚本里的日期是不固定的,如果只是昨天前天,我自己应该也好弄~能有其它办法么?

本回答被网友采纳
第2个回答  2014-08-14
sed 或awk 去替换
如果日期已经确定 vi里的替换是否可行。追问

sed或awk如何操作?
脚本里面的日期是不固定的,很多,所以想用命令去替换全部为当前系统日期!要求是不能用vi编辑器的。

第3个回答  2014-08-14
你学习shell呢还是想解决问题?文件夹名要改吗?追问

学习吧,就是用什么方法能把脚本中的日期,修改为当期系统日期,不是单单用vi进去修改。

追答

哦,不会shell不捣乱了,我以为什么方法都行呢

相似回答