我有一些脚本产生的颜色,我需要摆脱这一点。删除输出颜色
#!/bin/bash
exec > >(tee log) # redirect the output to a file but keep it on stdout
exec 2>&1
./somescript
的输出(在日志文件中):
java (pid 12321) is [email protected][60G[@[0;32m OK @[0;39m]
我不知道怎么把这里的ESC字符,所以我把@
在它的地方。
我改剧本为:
#!/bin/bash
exec > >(tee log) # redirect the output to a file but keep it on stdout
exec 2>&1
./somescript | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
但现在它给我(在日志文件中):
java (pid 12321) is [email protected][60G[ OK ]
我怎么也删除此'@[60G
?
也许有一种方法可以完全禁用整个脚本的着色?
BSD/OSX用户:我们通常没有-r选项来sed。 'brew install gnu-sed'将会安装一个支持的版本。用'gsed'运行。 –
如果我做'echo'$(tput setaf 1)foo $(tput sgr0)bar“| sed -r“s/\ x1B \ [([0-9] {1,2}(; [0-9] {1,2})?)?[mGK] // g”| cat -A',我得到:'foo^O bar $'所以我猜一些字符没有被正确删除,对吧?你知道如何纠正? – edi9999
@ edi9999据我所知,不同之处在于超过16种颜色的颜色设置(如'setaf'支持)需要的参数不止两个;我的正则表达式支持两个。改变第一个'?'出'''应该有所帮助。处理'sgr0'是可能的,但基于搜索,它可能会超出这个基于正则表达式的答案的范围。 –