You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用sed或awk交换CSV文件日期字段中的日与月

转换CSV最后一个字段的日期格式(月/日/年 → 日/月/年)

针对CSV文件最后一个字段为MM/DD/YYYY(月/日/年)格式的场景,以下是用sed和awk实现格式转换为DD/MM/YYYY(日/月/年)的具体命令:

方法1:使用sed

利用正则捕获分组交换日期中的月和日部分:

# 适配两位数字的月/日
sed -E 's/([0-9]{2})\/([0-9]{2})\/([0-9]{4})$/\2\/\1\/\3/' input.csv > output.csv

# 兼容一位数字的月/日(如1/9/2023)
sed -E 's/([0-9]{1,2})\/([0-9]{1,2})\/([0-9]{4})$/\2\/\1\/\3/' input.csv > output.csv
  • -E 启用扩展正则表达式,避免转义括号
  • 正则匹配行尾的日期格式,捕获月(第一组)、日(第二组)、年(第三组),替换时交换前两组的位置

方法2:使用awk

通过拆分最后一个字段来重组日期:

awk -F ',' -OFS ',' '{split($NF, date_parts, "/"); $NF = date_parts[2]"/"date_parts[1]"/"date_parts[3]}1' input.csv > output.csv
  • -F ',' 设置输入分隔符为逗号,-OFS ',' 设置输出分隔符为逗号,保证CSV格式不变
  • split($NF, date_parts, "/") 将最后一个字段($NF)按/拆分为数组date_parts,其中date_parts[1]是月,date_parts[2]是日,date_parts[3]是年
  • $NF = ... 重新赋值最后一个字段,交换月和日的位置
  • 末尾的1表示打印所有修改后的行

示例验证

输入行:

No non-compliant users,db2inst2,NA,C,13/09/2023

执行命令后输出行:

No non-compliant users,db2inst2,NA,C,09/13/2023

内容的提问来源于stack exchange,提问作者azad aawaraa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:57:15