用新行字符replace空间用于stream浪盒

我正在尝试使用shell脚本在我存储keycert文件的地方设置vagrant框。 任何证书或密钥文件的正常格式如下

 -----BEGIN CERTIFICATE----- MIIDzzCCAregAwIBAgIJAP384f0KeRndMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNV .... 0+ZQ+Yxjzs69VHdPJbzu3cxjNQ== -----END CERTIFICATE----- -----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC6qoE3hNniDqD7 .... wr5wa+bGBgNzIBLS5j9F9Kul -----END PRIVATE KEY----- 

但是,当我检查stream浪汉盒子,看起来像下面。

 -----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之后,由于空格字符而转到下一行。 这里的目标是保持第一行和最后一行,并格式化它们之间的内容。

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

但你有没有解决根本原因? 这些文件是如何被损坏的?

你应该使用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