我有一个文本文件,其中包含多次出现的日期。所有日期均以格式书写Mon-DD-YYYY
。我必须在当前日期中更新所有这些日期,并保持格式Mon-DD-YYYY
。
脚本语言是bash
. 一个大问题是我不知道如何将特定格式的日期与sed
、awk
、bash
内置函数等相匹配。
请问你能帮帮我吗?
谢谢
我有一个文本文件,其中包含多次出现的日期。所有日期均以格式书写Mon-DD-YYYY
。我必须在当前日期中更新所有这些日期,并保持格式Mon-DD-YYYY
。
脚本语言是bash
. 一个大问题是我不知道如何将特定格式的日期与sed
、awk
、bash
内置函数等相匹配。
请问你能帮帮我吗?
谢谢
设置
current_date=$(date +"%m-%d-%Y")
或 到您想要的任何日期,然后运行这样,您可以匹配文件中的任何日期并将其替换为 current_date
在这种情况下,命令
sed
的工作方式类似于:sed "s/tobereplace/replacement/g"
。最后g
的 代表全局,这意味着每次出现的 tobereplace 模式都将被替换所替换。[0-9]\{2\}-[0-9]\{2\}-[0-9]\{4\}
对于 tobereplaced ,使用正则表达式模式,它转换为[0-9]
0 到 9 之间的任意数字\{2\}
两次\{4\}
编辑: 正如 FelixJN 在评论中提到的,您可能希望月份作为字符串,因为您可以在日期命令中使用 %b 并替换正则表达式的第一部分,如下所示:
在这种情况下,正则表达式的工作方式如下:
[A-Z]
匹配从 A 到 Z 的任何大写字母。[a-z]\{2\}
匹配从 a 到 z 的任意小写字母两次其余的和上面说的一样