如何从cli输出中删除'^ [[2K“序列?

时间:2018-08-12 14:47:32

标签: linux command-line-interface

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

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'

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

$ 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序列开始的char。 tr是用于删除字符(不是字符串,单个字符)的工具,因此无法使用。在这里,我使用了sed,该字符串应不替换任何内容:sed 's/'"$(echo -e "\033")"'\[2K//'