Boston Linux & Unix (BLU) Home | Calendar | Mail Lists | List Archives | Desktop SIG | Hardware Hacking SIG
Wiki | Flickr | PicasaWeb | Video | Maps & Directions | Installfests | Keysignings
Linux Cafe | Meeting Notes | Blog | Linux Links | Bling | About BLU

BLU Discuss list archive


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Discuss] sed and ANSI sequences



On 10/13/2011 05:25 PM, Nuno Sucena Almeida wrote:
> On Thu, Oct 13, 2011 at 03:00:04PM -0400, David Kramer wrote:
> | PS: I did see one working example at
> | http://travelingfrontiers.wordpress.com/2010/08/22/how-to-add-colors-to-linux-command-line-output/
> | sed ''/crit/s//$(printf "\033[31mCRITICAL\033[0m")/g''
> | 
> | However, it relies on the printf command, which means (1)launching another process and 2) not
> | using sed's buffers, so I can't have a series of sed operations in one command.
> 
> I use something similar to this, also running an external command (echo). Here's an example, using the -e
> sed command argument
> 
> function getinfo()
> {
>     DEV="$1"
>     WHAT="$2"
>     REGEXP="s,.*${WHAT}:\([0-9.]\+\).*,\1,p"
>     ifconfig ${DEV} | sed -n -e "$(echo ${REGEXP})"
> }
> 
> AFAIR I went through the same issues and apparently you cannot directly pass
> variables to sed. If you feel thank you can do the same with (g)awk
> instead, you can pass variables to it.

I had no problems passing parameters to sed.  I solved that problem by
putting the environment variables outside the quotes and letting the
interpreter concatenate the strings:

sed -e
's/.*[WARNING].*/\'${COLOR_WARN}'&\'${COLOR_RESET}'/g;'

You see, the color variables are actually not inside the quotes.  That
part works fine.

The problem I'm having is the ANSI color escape codes are being printed
instead of interpreted.



BLU is a member of BostonUserGroups
BLU is a member of BostonUserGroups
We also thank MIT for the use of their facilities.

Valid HTML 4.01! Valid CSS!



Boston Linux & Unix / webmaster@blu.org