tr -d 或 sed -e 's/\r//g' 无法从 MINGW32 中的文件中删除 CRLF

Posted

技术标签:

【中文标题】tr -d 或 sed -e \'s/\\r//g\' 无法从 MINGW32 中的文件中删除 CRLF【英文标题】:tr -d or sed -e 's/\r//g' can't remove CRLF from file in MINGW32tr -d 或 sed -e 's/\r//g' 无法从 MINGW32 中的文件中删除 CRLF 【发布时间】:2021-04-26 21:13:18 【问题描述】:

我有这个证书文件

-----BEGIN CERTIFICATE REQUEST-----
MIIFIDCCAwgCAQAwIDEeMBwGA1UEAwwVdmF1bHQudmF1bHQtcGVyc28uc3ZjMIIC
IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA2h1Io+IPgBFYa+L9TFQ3hXDk
dKJFHVBHFx6RaYMDHJe75c/Ozq3zwAwlDlPviTvB96OyuBX9KIBDk5b0QCELYHym
omCSm1GO+Izxgu26aBvrbgycwUml+lXqW8R6reMpEBnaIRgOvPhIsncaR3iQBt8m
yPo/v5ouPCrVGJ5Hehi4ll0vwxI5/ETlJIjnDqBODwWRLvktv4ysHRj/4hyh5Yn0
IalOn9Cxo0w2zVQhFE63n3enz7c=
-----END CERTIFICATE REQUEST-----

我尝试从文件中删除所有 CRLF

这样也试过 tr -d "\n" 和 tr -d "\r" :

cat <<EOF >$TMPDIR/csr.yaml
apiVersion: certificates.k8s.io/v1beta1
kind: CertificateSigningRequest
metadata:
 name: $CSR_NAME
spec:
 groups:
 — system:authenticated
 request: $(cat $TMPDIR/server.csr | base64 | sed -e 's/\r//g')
 usages:
 — digital signature
 — key encipherment
 — server auth
EOF

不管我做什么 最终结果文件部分证书内容仍然包含换行符 我怎样才能删除它?

【问题讨论】:

你试过tr -d '\r' 吗? 是的,我还是用换行符写了文本 如果你删除LF,它只会是一条长线......无论如何,使用base64 -w0 来输出没有换行符。 is still contains the line break How can i remove it ?tr -d '\n' 试试 cat -v file.csr | tr "^M" "\n" | tr -d "\n" 【参考方案1】:

试试:

cat -v file.csr | tr "^M" "\n" | tr -d "\n"

这将输出带有 Windows 文件结尾 (-v) 的文件,然后使用 tr 将文件结尾 (^M) 替换为新行,然后删除新行 (-d)

【讨论】:

如果解决方案有效。请花点时间投票并接受答案。

以上是关于tr -d 或 sed -e 's/\r//g' 无法从 MINGW32 中的文件中删除 CRLF的主要内容,如果未能解决你的问题,请参考以下文章

linux之tr

linux中tr的功能多多

为啥 sed 不替换 NULL 字符 \x0?

linux tr命令详解

tr和sed命令

Sed/Tr 对 api 输出进行排序