我使用的是 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”这了解它将删除(或可能破坏)哪些其他控制序列。