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

如何编写Shell脚本删除证书文件中Bag Attributes到证书起始行的文本块

证书文件批量删除Bag Attributes块的实现方案

正确sed命令

# Linux 环境使用
sed -i '/Bag Attributes/,/-----BEGIN CERTIFICATE-----/{ /-----BEGIN CERTIFICATE-----/!d; }' "$CertName.pem"

# macOS 环境使用(sed 语法差异要求-i后指定备份后缀,此处用空后缀表示不生成备份文件)
sed -i '' '/Bag Attributes/,/-----BEGIN CERTIFICATE-----/{ /-----BEGIN CERTIFICATE-----/!d; }' "$CertName.pem"

命令逻辑说明

  • 用sed的范围匹配规则,匹配所有从Bag Attributes开头的行到下一个-----BEGIN CERTIFICATE-----行的闭合区间
  • 对区间内的所有行做判断:如果不是-----BEGIN CERTIFICATE-----行就删除,仅保留证书起始行,完全覆盖证书链中多个重复Bag Attributes块的处理场景

原命令错误原因

  • 单引号包裹的内容中$CertName.pem变量无法正常展开
  • 命令末尾多传入了"-----BEGIN CERTIFICATE-----"参数,被sed识别为待处理的文件名,文件不存在时无输出直接清空原文件
  • r读取文件的逻辑完全不符合当前区间删除的需求

备选awk实现(兼容性更好,跨平台通用)

awk '/Bag Attributes/{f=1} f && /-----BEGIN CERTIFICATE-----/{f=0} !f' "$CertName.pem" > tmp_cert && mv tmp_cert "$CertName.pem"

操作注意事项

  • 处理前建议先备份原证书文件:cp "$CertName.pem" "$CertName.pem.bak",避免操作失误丢失数据
  • 变量名如果包含空格或特殊字符,必须用双引号包裹避免解析错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:54:00