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

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

我使用的是 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

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

答案1

对于 bash,这应该传递 sed 适当的参数,我认为:

sed $'s,\x1b\\[[0-9;]*[a-zA-Z],,g'

或者,为了更方便地移植到其他 shell,您可以尝试:

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

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

但请注意,此 sed 语句删除的不仅仅是颜色代码,它可能会匹配以 CSI 开头的许多控制序列。在页面中搜索“CSI”了解它将删除(或可能破坏)哪些其他控制序列。

相关内容