将日期替换为当前日期

将日期替换为当前日期

我有一个文件abc.fil,其内容的格式为yyyymmdd.xyz.doc.我想要cat该文件abc.fil,以便我得到输出为20150127.xyz.doc.任何人都可以帮我解决这个问题吗?

样本文件:

$ cat abc.fil
o/p: yyyymmdd.xyz.doc
yyyymmdd.mno.dat
abc.txt

预期输出:yyyymmdd我希望当前日期以相同的顺序显示。

答案1

你可以使用sed

sed "s/yyyymmdd/$(date '+%Y%m%d')/g" abc.fil

这会将字符串替换yyyymmdd为根据需要格式化的当前日期。

编辑:

如果yyyymmdd只是要替换的日期格式,则使用该命令(假设 GNU sed):

sed -r "s/[12][0-9]{3}[01][0-9][0-3][0-9]/$(date '+%Y%m%d')/g" abc.fil

长正则表达式模式的含义如下:第一个数字可以是 1 或 2 ( [12]),接下来的三个数字可以是从 0 到 9 ( [0-9]) 的任何数字,即年份。现在是月份:第一个数字可以是 0 或 1,第二个数字可以是从 0 到 9 的所有数字 ( [01][0-9])。终于和那天一样了。

答案2

> today=$(date +%Y%m%d)
> sed "s/yyyymmdd/${today}/g" abc.fil
o/p: 20150127.xyz.doc
20150127.mno.dat
abc.txt

答案3

尝试

cat abc.fil | sed s/yyyymmdd/`date +%Y%m%d`/

相关内容