【问题标题】:Remove line break in the command prompt's output删除命令提示符输出中的换行符
【发布时间】:2021-04-24 13:42:15
【问题描述】:

我使用命令提示符(在 Windows 中)运行 OpenSSL 命令。我使用以下命令

openssl req -pubkey -in X.csr -noout

我得到以下输出:

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DBQcDQgAEDKaFsAauoh2mx418VYbZRButDnbl
wwWlth8Bkb+XV8gwh7399Ite0lkUhQcSAyEu6Xm7DhDSW28a54t0AQiQSw==
-----END PUBLIC KEY-----

我想在一行中获得输出(没有换行符),例如:

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DBQcDQgAEDKaFsAauoh2mx418VYbZRButDnblwwWlth8Bkb+XV8gwh7399Ite0lkUhQcSAyEu6Xm7DhDSW28a54t0AQiQSw==
-----END PUBLIC KEY-----

(或)就像下面的一样

MFkwEwYHKoZIzj0CAQYIKoZIzj0DBQcDQgAEDKaFsAauoh2mx418VYbZRButDnblwwWlth8Bkb+XV8gwh7399Ite0lkUhQcSAyEu6Xm7DhDSW28a54t0AQiQSw==

有人可以帮忙吗?

【问题讨论】:

  • 好吧,我不知道openssl 是否支持命令行选项来更改输出格式,所以请查阅文档。如果没有这样的,您可以使用for /F loop 来捕获输出文本并(错误)使用set /P 输出每一行而不带尾随换行符,如下所示:for /F "delims= eol=-" %L in ('openssl req -pubkey -in X.csr -noout') do < nul set /P ="%L"(不要忘记加倍%-signs 当你想在批处理文件中使用该代码时)

标签: shell cmd openssl newline command-prompt


【解决方案1】:

您可以使用for /F loop 来捕获输出文本并(错误地)使用set /P 来输出每一行而不带尾随换行符,如下所示:

for /F "delims= eol=-" %L in ('openssl req -pubkey -in X.csr -noout') do < nul set /P ="%L"

选项eol=- 允许for /F 跳过页眉和页脚行,因为它们以连字符开头。
(虽然有使用- 的Base64 编码变体,但您的数据中似乎没有+ 符号,但这取决于您使用的工具OpenSSL。 )

当您想在批处理文件中使用该代码时,不要忘记将 % 符号加倍!

【讨论】:

  • 完全不(误)使用。重定向和set /P 几乎是标准用法...
  • @DavidC.Rankin,我使用了“(错误)使用”一词,因为set /P 的预期目的是在我使用它作为替代变量时提示输入变量的值echo 命令不附加换行符,这可能并不明显,特别是对于不太熟悉cmd 的用户...
猜你喜欢
  • 2011-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-10
  • 1970-01-01
相关资源
最近更新 更多