我的问题类似于这个;我想用它cut
来模拟nowrap
on tmux
,但我的输出是彩色的。我知道我想保留多少列(50),但我不知道输出上有多少个颜色标签。剪切cut -c-50
会生成各种不同的输出,具体取决于每行上有多少转义字符(颜色标签)。
所以,总结一下:我可以忽略颜色以固定宽度剪切文本,这样我总是得到 50 个彩色字符吗?
答案1
尝试:
perl -pe 's/^((?:(?>(?:\e\[.*?m)*).){50}).*/$1\e[m/'
这假设是 ansi 类型的转义序列。
这些带有转义序列,例如\e[31m
设置颜色和\e[m
/或\e[0m
重置它。上面,我们\e[m
在每行末尾添加,但根据输入的不同,这可能并不总是理想的。