首页 > 解决方案 > 如何从 cli 输出中删除 '^[[2K' 序列?

问题描述

查询引擎输出包含此序列的文本,在我的终端上看起来像 '^[[2K'。我在谷歌中找不到任何关于它的信息,我想知道如何从输出中删除它。

CPU Time: 3.8s total, 26.3M rows/s,  143MB/s, 18% active
^[[2KPer Node: 0.5 parallelism, 14.4M rows/s, 78.6MB/s
Parallelism: 2.7
^[[2KPeak Memory: 24B
0:01 [100M rows, 544MB] [72.2M rows/s, 393MB/s]

我试过 tr 但没有正常工作:

 tr -d '^[[2K'

有更好的方法吗?

标签: linuxcommand-line-interface

解决方案


$ echo -e 'CPU Time: 3.8s total, 26.3M rows/s,  143MB/s, 18% active
\033[2KPer Node: 0.5 parallelism, 14.4M rows/s, 78.6MB/s
Parallelism: 2.7
\033[2KPeak Memory: 24B
0:01 [100M rows, 544MB] [72.2M rows/s, 393MB/s]' | sed 's/'"$(echo -e "\033")"'\[2K//'

输出:

CPU Time: 3.8s total, 26.3M rows/s,  143MB/s, 18% active
Per Node: 0.5 parallelism, 14.4M rows/s, 78.6MB/s
Parallelism: 2.7
Peak Memory: 24B
0:01 [100M rows, 544MB] [72.2M rows/s, 393MB/s]

^[是终端显示\033八进制或0x1b数值的方式。它是开始 ascii escpae 序列的字符。tr是一个删除字符(不是字符串,单个字符)的工具,所以它不起作用。在这里,我使用sed应该将字符串替换为空:sed 's/'"$(echo -e "\033")"'\[2K//'


推荐阅读