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

如何用Linux sed命令为YAML日期字段值添加单引号?

使用sed为YAML指定日期字段值添加单引号

单个文件处理命令

针对单个YAML文件,直接用sed的替换功能修改:

# Linux/GNU sed 版本(直接修改文件,无备份)
sed -i 's/^\(pubDate: \)\(.*Z\)$/\1'\''\2'\''/' your_file.yaml

# macOS/BSD sed 版本(需指定空备份后缀)
sed -i '' 's/^\(pubDate: \)\(.*Z\)$/\1'\''\2'\''/' your_file.yaml

批量处理多个YAML文件

如果要处理当前目录下所有.yaml文件:

# Linux/GNU sed
sed -i 's/^\(pubDate: \)\(.*Z\)$/\1'\''\2'\''/' *.yaml

# macOS/BSD sed
sed -i '' 's/^\(pubDate: \)\(.*Z\)$/\1'\''\2'\''/' *.yaml

命令解释

  • -i:直接修改源文件内容(macOS sed需要额外加''表示不生成备份文件)
  • 正则匹配逻辑:
    • ^ 匹配行首,确保只处理独立的pubDate字段
    • \(pubDate: \) 捕获字段名部分,保存为第1个分组
    • \(.*Z\) 捕获以Z结尾的UTC日期值(符合ISO 8601格式),保存为第2个分组
    • $ 匹配行尾,避免匹配行中包含pubDate的其他内容
  • 替换逻辑:\1'\''\2'\'' 把捕获的字段名、日期值拼接,给日期值包裹单引号('\''是Shell中表示单引号的转义写法)

适配特殊场景

  1. 字段带缩进的嵌套结构:如果pubDate前有2个空格缩进,修改正则匹配行首的缩进:
sed -i 's/^  \(pubDate: \)\(.*Z\)$/  \1'\''\2'\''/' your_file.yaml
  1. 更严格的日期格式匹配:如果要避免误匹配非日期内容,可以用更精准的正则匹配ISO日期格式:
sed -i 's/^\(pubDate: \)\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}T[0-9:.]*\)$/\1'\''\2'\''/' your_file.yaml

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 23:47:55