Alpine Linux - sed - 使用 Alpine sed 实用程序时 -z 或 --null-data 开关的等效项是什么?

ano*_*spp 3 sed alpine-linux

在之前的项目中,我使用 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

Kam*_*Cuk 5

使用 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)
sed -zE 's/\r\n|\n/\\n/g'
Run Code Online (Sandbox Code Playgroud)

如果你想远程\r,不需要使用零分隔流。\r只需从行的实际末尾删除字符,为什么要匹配换行符,如果sed已经在行上工作了。

sed 's/\r$//'
Run Code Online (Sandbox Code Playgroud)

但实际上,要删除字符,请使用tr

tr -d '\r'
Run Code Online (Sandbox Code Playgroud)