首页 > 解决方案 > 修剪流的最后一个字符

问题描述

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

$ builtin printf 'a\nb\0' | sed -e '$s/.$//' | od -c -t x1 -Ax
000000   a  \n   b
        61  0a  62
000003

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

$ builtin printf 'a\nb\n' | sed -e '$s/.$//' | od -c -t x1 -Ax
000000   a  \n  \n
        61  0a  0a
000003

标签: sedcommand-linestreamtruncate

解决方案


您可以使用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

推荐阅读