【发布时间】:2021-10-24 02:05:02
【问题描述】:
也许有人问过这个问题,但我似乎找不到它,但问题是我想摆脱一段文本(或任何时候它出现在文件中),并将其替换为任何内容.该示例是解码证书并删除包属性,其中文本块在开始和结束文本之间可能略有不同,但它们始终以相同的开头并以我想要保留的行结束:
例如 该文件将包含如下文本,并且在使用链式证书时可能有多个实例:
包属性
localKeyID:xx 00 yy 00
友好名称:something.domain.com
subject=/serialNumber=公司实体/jurisdictionCountryName=US
/jurisdictionStateOrProvinceName=华盛顿/businessCategory=公司实体/C=US
/ST=华盛顿/L=西雅图/O=Bobs Place/OU=Bobs/CN=something.domain.com
issuer=/C=GB/O=GoDaddy/CN=GoDaddy 证书
-----开始证书-----
我希望能够查找以“Bag Attributes”开头并以包含“-----BEGIN CERTIFICATE-----”的行结尾的模式,并删除“-”之前的所有行----BEGIN CERTIFICATE-----"(仅斜体文本)。当它们被链接时,以前的证书条目以“-----END CERTIFICATE-----”结尾,所以我不想回到文件的开头或这么多行,我真的想要从“Bag Attributes”行开始,到下一个“-----BEGIN CERTIFICATE-----”字符串之前的行结束。
我尝试了以下,但只成功删除了所有内容,而不仅仅是我想要的行:
sed -i -ne '/包属性/ {p; r $CertName.pem' -e ':a; n; /-----开始证书-----/ {p;乙};巴}; p' "-----开始证书-----"
这应该获取文件“$CertName.pem”并通过“-----BEGIN CERTIFICATE-----”行查找以“Bag Attributes”开头的所有内容,然后将其替换为“ -----BEGIN CERTIFICATE-----",但这显然没有像我希望的那样工作。
有什么建议吗?
【问题讨论】: