当 sed 以“视觉上明确”的形式打印时如何修剪尾部 $?

问题描述 投票:0回答:1

我想逐字列出转义字符。

受到这个答案的启发

printf '\033[m$123' | sed --quiet l
\033[m$123$                             # output: fail

但我想去掉拖尾的美元符号。

可以再次将输出通过管道传输到

sed

printf '\033[m$123' | sed --quiet l | sed 's/\$$//'
\033[m$123                              # output: desired

是否可以将两个

sed
命令组合为一个,减少为仅一个
sed
调用?

从下面手册中的示例5.9.1中,我尝试利用“保留空间”。但似乎并没有达到预期效果。

https://www.gnu.org/software/sed/manual/sed.html

printf '\033[m$123' | sed --quiet 'l ; H ; ${x;s/\$$//}'
\033[m$123$                             # output: fail
shell sed escaping
1个回答
0
投票

这可能对你有用(GNU sed):

printf '\033[m$123' | sed 's/.*/echo "&" | sed -n l/e;s/.$//'

使用替换命令上的

e
标志在每行上调用另一个 sed 调用,然后删除最后一个字符。

© www.soinside.com 2019 - 2024. All rights reserved.