Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Remove ANSI color codes from a text file using bash

Tags:

I have a bash script that runs and outputs to a text file however the colour codes it uses are also included what i'd like to know is how to remove them from the file, ie

^[[38;1;32mHello^[[39m
^[[38;1;31mUser^[[39m

so I just want to be left with Hello and User

like image 681
Lurch Avatar asked Oct 10 '13 13:10

Lurch


2 Answers

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

this command removes the special characters and color codes from the file

these are some of ANSI codes: ESC[#;#H or ESC[#;#f moves cursor to line #, column # ESC[2J clear screen and home cursor ESC[K clear to end of line,

note in case of clear code there is neither number nor semicolon ;

agree with below comment: if the numbers are more than 2 digit kindly use this:

sed -r "s/\x1B\[(([0-9]+)(;[0-9]+)*)?[m,K,H,f,J]//g" filename
like image 61
sandy_1111 Avatar answered Oct 12 '22 21:10

sandy_1111


My solution:

... | sed $'s/\e\\[[0-9;:]*[a-zA-Z]//g'

The colon is there to support escapes for some old terminal types.

like image 42
Wiimm Avatar answered Oct 12 '22 21:10

Wiimm