在OSX上:
bash-3.2$echo "abc" | sed 's/b/\x1b[31mz\x1b[m/' ax1b[31mzx1b[mc
@H_502_8@而在Linux上:
$echo "abc" | sed 's/b/\x1b[31mz\x1b[m/' azc
@H_502_8@并且z正确显示红色.
这是bash 3.2的限制吗?我的Linux测试在这里运行bash 4.1.2.
奇怪的是在我的Linux环境中工作时bash是3.2以下的版本,它也适用于那里.
此外,这可能是相关的,但可能不是:
bash-3.2$echo "abc" | sed 's/b/^[[31mz^[[m/' 31mz$'m/'azc
@H_502_8@再次,具体到BSD sed.这是非常令人费解的:似乎有些事情导致shell或sed以某种方式将命令的一些错位部分回应到终端?但是,它总是在命令的正确输出之前.那个美元符号来自哪里?
(不要被我的命令中的颜色混淆(在青色unicode字符看起来像一个不太弯曲的>这是我的提示之后),我使用语法高亮显示zsh)
最佳答案