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

如何从可变长度证书日期字符串中删除HH MM SS段 输出MM DD YYYY格式

问题场景

我尝试在如下示例中删除日期里的时、分、秒部分:

data=`security find-certificate -c "ABC Company Root 2016 CA" -p | openssl x509 -text | grep "Not After"`

echo $data
# 输出示例:Not After : Mar  6 01:00:53 2026 GMT
date1=`cut -c 13-32 <<< $data`
echo $date1
# 输出示例:Mar  6 01:00:53 2026

当前无法按照固定字符位置截取内容,因为字符串长度可变:比如日期中的日可能是个位数6,也可能是16这类双位数,日期为动态生成的非固定值。需要一种可以定位冒号前后对应字符并将其删除的方法,最终期望输出为MM DD YYYY格式的日期,示例如下:
Mar 6 2026

解决方案

这里提供2种稳定的实现方法:

方法1:awk按字段拆分处理

awk默认按空白字符拆分字段,你需要的月份、日、年份分别对应输出内容的第4、5、7个字段,直接输出对应字段即可,不用关心单/双位数日的空格差异:

echo "$data" | awk '{print $4, $5, $7}'

如果要把格式化后的日期赋值给变量:

formatted_date=$(echo "$data" | awk '{print $4, $5, $7}')
echo "$formatted_date"
# 输出示例:Mar 6 2026

方法2:sed匹配删除时分秒段

直接匹配数字:数字:数字的时分秒固定格式,连带前后的空格一起删除后提取目标字段:

echo "$data" | sed 's/[0-9]*:[0-9]*:[0-9]* //' | awk '{print $4, $5, $6}'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:15:04