剪切彩色文本忽略颜色标签

Raf*_*ins 3 colors terminal tmux cut

我的问题与类似;我想用来cut模拟nowrapon tmux,但我的输出是彩色的。我知道我想保留多少列(50),但我不知道输出中有多少颜色标签。cut -c-50根据每行上有多少转义字符(颜色标签),cutting with 会生成各种不同的输出。

所以,总结一下:我可以忽略颜色以固定宽度剪切文本,以便我总是以 50 个彩色字符结束吗?

Sté*_*las 6

尝试:

perl -pe 's/^((?:(?>(?:\e\[.*?m)*).){50}).*/$1\e[m/'
Run Code Online (Sandbox Code Playgroud)

这假设 ansi 类型的转义序列。

这些带有转义序列,例如\e[31m设置颜色和/\e[m\e[0m重置颜色。上面,我们\e[m在每一行的末尾添加,但根据输入,这可能并不总是可取的。