在之前的项目中,我使用 sed 实用程序将换行符替换为 NUL 字符,以与在 CI 服务器上添加发行说明的 API 兼容。
sed -zE 's/\r\n|\n/\\n/g' < CHANGELOG.md
Run Code Online (Sandbox Code Playgroud)
但是,在另一个项目中,我使用基于 alpine 的 docker 映像 ( mcr.microsoft.com/dotnet/core/sdk:3.1-alpine),并且在使用该实用程序时,alpine linux 上无法识别-z或映像。--null-datased
如何实现与 Alpine Linux实用程序中的-z或等效的功能?--null-datased
使用 Alpine sed 实用程序时,-z 或 --null-data 开关的等效项是什么?
没有同等的。
如何使用 Alpine Linux sed 实用程序实现与 -z 或 --null-data 等效的功能?
安装 GNU sed,而不是使用 busybox sed。
/ # sed --help
BusyBox v1.31.1 () multi-call binary.
/ # apk add sed
...
/ # sed --version
sed (GNU sed) 4.8
Run Code Online (Sandbox Code Playgroud)
我使用 sed 实用程序将换行符替换为 NUL
使用tr,它是一个为“翻译或删除字符”而创建的工具。
tr '\n' '\0'
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)sed -zE 's/\r\n|\n/\\n/g'
如果你想远程\r,不需要使用零分隔流。\r只需从行的实际末尾删除字符,为什么要匹配换行符,如果sed已经在行上工作了。
sed 's/\r$//'
Run Code Online (Sandbox Code Playgroud)
但实际上,要删除字符,请使用tr:
tr -d '\r'
Run Code Online (Sandbox Code Playgroud)