【发布时间】:2014-03-30 01:52:12
【问题描述】:
是否有一种工具可以稳健地呈现带有转义序列的文本(例如终端日志)?
这个问题与render text with escape squence (like a terminal)有关 (我对那个问题的编辑被拒绝了,所以我在这里发布一个带有具体新用例的新问题;上述问题的答案未能解决这个用例)。
例如,我想在终端日志中搜索一个字符串,只搜索实际显示的字符串,例如:
$script terminal_log.txt
logging to terminal_log.txt
$echo bar<BACKSPACE><BACKSPACE><BACKSPACE>foo
foo
$cat terminal_log.txt|grep -c bar
1
$cat terminal_log.txt|sometool|grep -c bar
0
sometool 将通过完全删除 bar 来呈现文本(由用户使用 3 个退格键删除),完全如终端输出所示,而 cat 不会删除它。
[编辑]这里是另一个例子,表明提议的col -b 不起作用:
$echo bar
bar
$clear
#the screen is cleared
$cat terminal_log.txt
#nothing shown, in particular no bar
$cat terminal_log.txt|col -b|grep -c bar
2
即使cat terminal_log.txt 没有显示bar(由于终端序列而隐藏),我们也得到2 而不是0。
所以实用程序col -b 不处理诸如清除等终端命令。
我正在寻找的是一个实用程序,可以准确呈现终端上显示的内容。
【问题讨论】:
-
考虑用
grep -c bar替换grep bar|wc -l