![使用 BSD sed(或任何其他工具)在 OS X 上去除颜色](https://linux22.com/image/39073/%E4%BD%BF%E7%94%A8%20BSD%20sed%EF%BC%88%E6%88%96%E4%BB%BB%E4%BD%95%E5%85%B6%E4%BB%96%E5%B7%A5%E5%85%B7%EF%BC%89%E5%9C%A8%20OS%20X%20%E4%B8%8A%E5%8E%BB%E9%99%A4%E9%A2%9C%E8%89%B2.png)
我使用的是 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”这了解它将删除(或可能破坏)哪些其他控制序列。