使用 BSD sed(或任何其他工具)在 OS X 上剥离颜色

ico*_*ast 8 colors bash sed

我在 OS X 上,它有一个 BSD 版本sed(我猜它不如 Linux 上的 GNU 版本),并且所有在 commandlinefu.com 上去除颜色的技术都不起作用。我尝试用 替换-r开关(在 OS X 上不存在)-e,但这没有帮助。

是否有一些可靠的方法可以删除 OS X 上的颜色格式代码?这是我正在运行的需要去除颜色输出的命令:

for concurrency in $(seq 1 50); do siege -f urls.txt -c $concurrency -t 5m >> results.csv ; done
Run Code Online (Sandbox Code Playgroud)

这是一个尝试用于sed从 CSV 输出中去除颜色的示例:

for concurrency in $(seq 1 50); do siege -f urls.txt -c $concurrency -t 5m | sed "s,\x1B\[[0-9;]*[a-zA-Z],,g" >> results.csv ; done
Run Code Online (Sandbox Code Playgroud)

god*_*eek 15

使用 bash,这应该通过 sed 适当的参数,我认为:

sed $'s,\x1b\\[[0-9;]*[a-zA-Z],,g'
Run Code Online (Sandbox Code Playgroud)

或者,对于其他 shell 更便携,您可以尝试:

sed "s,$(printf '\033')\\[[0-9;]*[a-zA-Z],,g"
Run Code Online (Sandbox Code Playgroud)

或者只是通过键入Ctrl-vEsc而不是键入将转义字节直接放入字符串中\x1b

但是请注意,这个 sed 语句可能删除的不仅仅是颜色代码 - 它可以匹配许多以 CSI 开头的控制序列。在网页搜索“CSI”,在得到一个什么样的其他控制序列,它会删除(或可能轧液)的想法。