MSG_OUT="<B><I>Skipping<N> all libraries and fonts...<N>"
perl -ne '%ES=("B","[1m","I","[3m","N","[m","O","[9m","R","[7m","U","[4m"); while (<>) { s/(<([BINORSU])>)/\e$ES{$2}/g; print; }'
Run Code Online (Sandbox Code Playgroud)
这个 Perl 单行代码将标记替换为转义序列。
它按预期工作,但前提是输入被换行符包围。
IE
echo "\x0a${MSG_OUT}\x0a" | perl -ne '.... etc.
Run Code Online (Sandbox Code Playgroud)
从 stdin 读取时如何避免此问题?
perl ×1