我有一个文件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`/