CentOS 4.4では、テキストファイルからエスケープシーケンスを削除するにはどうすればよいですか?


17

テキストファイルからカラーコードエスケープシーケンスを取り除くには、どのコマンドを使用できますか?理想的にはパイプスルーできるもの。たくさんの色付きテキストrainbow.txtを含むファイルがある場合、ギャップにあるものは次のとおりです。

cat rainbox.txt | *something* > plain.txt

CentOS 4.4でbashを使用しています。

回答:


30

試してください:

sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"

3つの回答のうち、これが唯一有効でした。
slm 14

4

cat rainbox.txt | col -b > plain.txt


これに賛成票がないのはなぜですか?私のために働く唯一の解決策!そして、それは非常に簡単です!
プネヘヘ

3
それは私にとってはうまくいかないからです。
lzap

6
これは、引数ではなくエスケープ文字のみを削除します。
アーロン

1

エスケープシーケンスとは一般的には明確に定義されていないため、できません。エスケープシーケンスがどのような種類の端末向けに設計されているかを知る必要があります。問題を「ANSIカラーシーケンスの除去」に限定する場合(かなりありそうな仮定)、次のようになります。

sed 's/\o033\[[0-9]*;[0-9]*m//g'

トリックを行う必要があります。


1

以下は[Xm[X; m[X; Ym、および[X; Y; ​​Zmの可能性をキャプチャします(それらのいくつかは技術的に間違っているかもしれませんが、動作し、実際に見られています):

sed -r 's|\x1B\[[0-9]{1,2};?(;[0-9]{1,2}){,2}m||g'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.