修剪流的最后一个字符

5 command-line truncate sed stream

我用来sed -e '$s/.$//'修剪流的最后一个字符。这是正确的方法吗?使用其他命令行工具还有其他更好的方法吗?

$ builtin printf 'a\nb\0' | sed -e '$s/.$//' | od -c -t x1 -Ax
000000   a  \n   b
        61  0a  62
000003
Run Code Online (Sandbox Code Playgroud)

编辑:看来这个命令并不健壮。a\nb以下示例的预期输出。需要更好的方法(但不要太冗长)。

$ builtin printf 'a\nb\n' | sed -e '$s/.$//' | od -c -t x1 -Ax
000000   a  \n  \n
        61  0a  0a
000003
Run Code Online (Sandbox Code Playgroud)

anu*_*ava 1

您可以使用head -c -1

printf 'a\nb\0' | head -c -1 | od -c -t x1 -Ax

000000   a  \n   b
        61  0a  62
000003


printf 'a\nb\n' | head -c -1 | od -c -t x1 -Ax

000000   a  \n   b
        61  0a  62
000003
Run Code Online (Sandbox Code Playgroud)