为什么向其发送标准输出后,我有一个空文件

问题描述 投票:0回答:1

使用bash我正在执行以下命令来从证书中过滤信息

openssl s_client -connect google.com:443 < /dev/null > cert.pem 
openssl x509 -in cert.pem -noout -subject > commonName
tr "," "\n" < commonName | sed -nr '/CN/p' | tr -d ' /t' > commonName

最后一条命令将文件“ commonName”留空,我想知道为什么会这样。如果我改为附​​加文件“ >>”,则显示所需的过滤输出,但仍保留未过滤的内容。

将文件留空

tr "," "\n" < commonName | sed -nr '/CN/p' | tr -d ' /t' > commonName

作品,但包含不想要的内容

tr "," "\n" < commonName | sed -nr '/CN/p' | tr -d ' /t' >> commonName

编辑,可能会添加以新名称发送到文件的功能。例如,将“ commonName”更改为“ test”。

谢谢!/ R

bash sed filter stdout tr
1个回答
0
投票

您不能使用其他命令来编辑文件,并且只能在一个管道中执行sed(操作方式)。您需要一个临时文件:

© www.soinside.com 2019 - 2024. All rights reserved.