BSD sed(またはその他のツール)を使用してOS Xから色を削除する

BSD sed(またはその他のツール)を使用してOS Xから色を削除する

sed私はBSDバージョン(LinuxのGNUバージョンほど良くないようです)を持つOS Xを使用しています。commandlinefu.comのすべての色除去技術動作しません。-rOS 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'

または、他のシェルに移植しやすくするには、次のことを試すことができます。

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

Ctrl-vEscまたは、入力の代わりに入力を介してエスケープされたバイトを文字列に直接置きます\x1b

ただし、このsedステートメントはカラーコード以上を削除するため、CSIで始まる多くの制御シーケンスと一致する可能性があります。ページで「CSI」を検索してください。これ削除(または破壊)する他の制御シーケンスが何であるかを理解します。

おすすめ記事