zsh-users
 help / color / mirror / code / Atom feed
From: Bart Schaefer <schaefer@brasslantern.com>
To: Zsh Users <zsh-users@zsh.org>
Subject: Re: convert sed to zsh
Date: Thu, 26 Nov 2015 12:17:44 -0800	[thread overview]
Message-ID: <151126121744.ZM5731@torch.brasslantern.com> (raw)
In-Reply-To: <56574625.308@eastlink.ca>

On Nov 26,  9:49am, Ray Andrews wrote:
} Subject: convert sed to zsh
}
}      sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g"
} 
} Here's my candidate zsh:
} 
}      bar=$foo//$'\x1B'\[([0-9](#c0,2)(;[0-9](#c0,2))#)#[mGK]/}

That's a parse error, you're missing the opening curly brace.

You can write $'\x1B' as $'\e' for clarity.

Why change {1,2} in sed to (#c0,2) in zsh?  (#c1,2) should work.

} ... so far it's working, but I'm nervous about it.  In another context 
} it seems I have to backslash the semi-colon, but here it seems ok either 
} way, but of course it should be one or the other.

"Of course"?

The reason both ';' and '\;' work there has to do with the properties
of patterns rather than the properties of semicolons.  Semicolon is a
command terminator but otherwise is not special, so you need to protect
a literal semicolon only from command parsing [such as inside $(...)].

} The 'sed' is of course the kosher way (I believe) of removing color
} codes and various other escapes like "\e[K" that seem to hang around
} colorized output of 'grep' and so on.

I'm not quite an expert on color codes but the zsh expression should
do the same as the sed (modulo 1,2 vs. 0,2 as noted and assuming you
have extendedglob set).  I do know that there are other escapes (cursor
movements, overstriking, etc.) that won't match this expression, but
probably you never encounter those in the usage you expect.


  reply	other threads:[~2015-11-26 20:17 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-26 17:49 Ray Andrews
2015-11-26 20:17 ` Bart Schaefer [this message]
2015-11-26 21:18   ` Ray Andrews

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=151126121744.ZM5731@torch.brasslantern.com \
    --to=schaefer@brasslantern.com \
    --cc=zsh-users@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).