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

寻求适配三种场景的单行Sed日期转换命令方案

通用单行Sed命令处理三种日期场景

以下这条单行Sed命令可以同时适配你提到的三种输入场景:

sed -E -e 's/([0-9]{2})\/([0-9]{2})\/([0-9]{4})/\2-\1-\3/' -e 's/-01-/-Jan-/;s/-02-/-Feb-/;s/-03-/-Mar-/;s/-04-/-Apr-/;s/-05-/-May-/;s/-06-/-Jun-/;s/-07-/-Jul-/;s/-08-/-Aug-/;s/-09-/-Sep-/;s/-10-/-Oct-/;s/-11-/-Nov-/;s/-12-/-Dec-/'

命令说明

  1. -E参数:启用扩展正则表达式,简化分组和量词写法,避免大量转义符。
  2. 第一个替换规则:匹配MM/DD/YYYY格式的日期,将其重排为DD-MM-YYYY结构(调换日和月的位置,保留年份)。
  3. 后续替换规则:将月份数字逐一替换为对应的英文缩写(比如-01-替换为-Jan-),最终得到DD-MMM-YYYY格式。
  4. 对-----的处理:该命令仅匹配MM/DD/YYYY格式字符串,-----会完全保留,无需额外处理。

场景测试

  • 场景1(两个有效日期):
    输入:Invoice 03/15/2024 11/22/2023 Paid
    输出:Invoice 15-Mar-2024 22-Nov-2023 Paid

  • 场景2(第一个日期有效,第二个为-----):
    输入:Order 07/04/2021 ----- Pending
    输出:Order 04-Jul-2021 ----- Pending

  • 场景3(两个日期均为-----):
    输入:Draft ----- ----- Unprocessed
    输出:Draft ----- ----- Unprocessed

如果你的日期固定在输入的特定字段(比如第2和第4个字段),可以使用更精准的版本,避免误匹配其他位置的类似格式:

sed -E -e 's/^([^ ]+ )([0-9]{2})\/([0-9]{2})\/([0-9]{4})( .* )(([0-9]{2})\/([0-9]{2})\/([0-9]{4})|-----)(.*)$/\1\3-\2-\4\5\6\9/' -e 's/-01-/-Jan-/;s/-02-/-Feb-/;s/-03-/-Mar-/;s/-04-/-Apr-/;s/-05-/-May-/;s/-06-/-Jun-/;s/-07-/-Jul-/;s/-08-/-Aug-/;s/-09-/-Sep-/;s/-10-/-Oct-/;s/-11-/-Nov-/;s/-12-/-Dec-/'

这个版本会严格匹配第2个字段的日期,以及第4个字段的日期或-----,适用于字段位置固定的输入记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:52:46