我想逐字列出转义字符。
受到这个答案的启发:
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
这可能对你有用(GNU sed):
printf '\033[m$123' | sed 's/.*/echo "&" | sed -n l/e;s/.$//'
使用替换命令上的
e
标志在每行上调用另一个 sed 调用,然后删除最后一个字符。