热通过 sed 命令替换 stdout 最后一个控制字符的最后一行?

Hot to replace the stdout the last line of the last control character via sed command?

我想替换(删除)最后一个控制字符的最后一行 newline 形成 ls 命令标准输出结果。 我试过的 sed 命令是:

ls | sed '$ s/[[:cntrl:]]$//'
ls | sed '$ s/[[:graph:]]$//'
ls | sed '$ s/[[:print:]]$//' 

我想要的结果像这样的结果ls | head -c -1

我的 sed 命令有什么问题吗? 谢谢!

如果当前行以换行符终止,sed 似乎会自动添加换行符,但我不知道如何关闭该行为。

您可以尝试不同的方法:捕获命令的输出(命令替换语法去除尾随换行符);然后在没有换行符的情况下打印它

printf '%s' "$(ls)"

这可能适合您 (GNU sed):

sed -z 's/\n$//' file