如何拥有类似 head -c 的东西但处理彩色字符

如何拥有类似 head -c 的东西但处理彩色字符

看起来 head 和 sed 将颜色代码视为实际字符。如何从输入中获取前 n 个实际可见的字符?

答案1

可能不是很高效,但是使用 GNU awk,您可以执行以下操作:

gawk -v RS='\033\\[[;[:digit:]]{0,16}[[:alpha:]]|.' -v ORS= -v count=123 '
  {n += RT ~ /^[[:print:]]$/}; n > count {exit}; {print RT}'

(其中count是您想要获取的字符数)。

请注意,虽然head -c计算的是数量字节,以上计算的数量人物

我们只考虑控制字符,如换行符、回车符或制表符,以及转义序列,格式如下:\e[123;123x如颜色字符(其中xis m)或光标定位字符(其中xis H)。

相关内容