Dải màu trên OS X bằng BSD sed (hoặc bất kỳ công cụ nào khác)


8

Tôi đang dùng OS X, có phiên bản BSD sed(mà tôi đoán là kém hơn phiên bản GNU trên Linux) và tất cả các kỹ thuật xóa màu trên Commandlinefu.com đều không hoạt động. Tôi đã thử thay thế công -rtắc (không tồn tại trên OS X) -e, nhưng điều đó không có ích.

Có cách nào đáng tin cậy để tôi có thể xóa mã định dạng màu trên OS X không? Đây là lệnh tôi đang chạy cần loại bỏ màu đầu ra:

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

và đây là một ví dụ về việc cố gắng sử dụng sedđể tách màu khỏi đầu ra 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

Câu trả lời:


15

Với bash, điều này phải vượt qua những lý lẽ phù hợp với sed, tôi nghĩ:

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

Hoặc, rõ ràng hơn với các shell khác, bạn có thể thử:

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

Hoặc chỉ cần đặt một byte thoát trực tiếp vào chuỗi bằng cách gõ Ctrl-vEscthay vì gõ \x1b.

Tuy nhiên, lưu ý rằng tuyên bố sed này loại bỏ nhiều hơn chỉ các mã màu, có khả năng - nó có thể khớp với nhiều chuỗi điều khiển bắt đầu bằng CSI. Tìm kiếm trong trang "CSI" trong phần này để có ý tưởng về các chuỗi điều khiển khác mà nó sẽ loại bỏ (hoặc có thể là mangle).


1
Phiên bản bash hoạt động mà không cần bất kỳ sự điều chỉnh nào: bạn xứng đáng nhận được nhiều lượt nâng cấp hơn tất cả những người trên Commandlinefu.com!
iconoclast
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.