将空格替换为换行符以供 vagrant box 使用

将空格替换为换行符以供 vagrant box 使用

我正在尝试使用 shell 脚本设置 vagrant box,在其中存储key文件cert。任何证书或密钥文件的正常格式如下

-----BEGIN CERTIFICATE-----
MIIDzzCCAregAwIBAgIJAP384f0KeRndMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNV
....
0+ZQ+Yxjzs69VHdPJbzu3cxjNQ==
-----END CERTIFICATE-----

-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC6qoE3hNniDqD7
....
wr5wa+bGBgNzIBLS5j9F9Kul
-----END PRIVATE KEY-----

然而,当我检查 vagrant box 时它看起来如下所示。

-----BEGIN CERTIFICATE----- MIIDzzCCAregAwIB ..... 69VHdPJbzu3cxjNQ== -----END CERTIFICATE-----

-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhki  .... OB7jnwaqq wr5wa+bGBgNzIBLS5j9F9Kul -----END PRIVATE KEY-----

(基本上,所有内容都在一行中)

由于 Apache2 在日志中出现错误。现在我想将这些密钥转换为正确的格式。我尝试了以下方法

cat server.crt | tr " " "\n" 
cat server.crt | tr "\ /" " " 

但没有帮助。

    -----BEGIN
CERTIFICATE-----
MIIDzzCCAregAwIBAgIJAP384f0KeRndMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNV

0+ZQ+Yxjzs69VHdPJbzu3cxjNQ==
-----END
CERTIFICATE-----

这是我通过命令得到的结果sed -i 's/ /\n/g' *.crt。END 之后,由于空格字符,它会转到下一行。这里的目标是保持第一行和最后一行不变,并格式化它们之间的内容。

答案1

你想要sed -i 's/ /\n/g' *.crt(假设你有 GNU sed)

但你解决根本原因了吗?如何文件损坏了吗?

答案2

你应该使用tr '\ ' '\n'

例子:

[root@localhost ~]# uname -a
Linux localhost 2.6.32-504.16.2.el6.x86_64 #1 SMP Tue Mar 10 17:01:00 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# uname -a | tr '\ ' '\n'
Linux
localhost
2.6.32-504.16.2.el6.x86_64
#1
SMP
Tue
Mar
10
17:01:00
EDT
2015
x86_64
x86_64
x86_64
GNU/Linux

相关内容