[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Why TAB in ansi color is not recognized?
From: |
Peng Yu |
Subject: |
Re: Why TAB in ansi color is not recognized? |
Date: |
Sun, 28 Apr 2019 15:39:57 -0500 |
Thanks. Where the `[ K` come from? I only see `[ m` but not `[ K`.
What does `[ K` mean? Thanks.
http://pueblo.sourceforge.net/doc/manual/ansi_color_codes.html
On Sun, Apr 28, 2019 at 2:49 PM Assaf Gordon <address@hidden> wrote:
>
> Hello,
>
> On 2019-04-28 11:23 a.m., Peng Yu wrote:
> >
> > In the 2nd example, it is not sorted as what I want. Why is it so?
> >
> > $ printf '%s\t%s\n' a 1 a 2 |grep --color=always a | sort -k 2,2nr
> > a 2
> > a 1
> > $ printf '%s\t%s\n' a 1 a 2 | grep --color=always a$'\t' | sort -k 2,2nr
> > a 1
> > a 2
> >
>
> The 'grep' in the second example highlights *both* the 'a' character
> and the 'tab' character.
>
> This means that the ANSI sequence to restore color (\033 [ m \033 [ K)
> appears *after* the tab, and is then parsed by 'sort' as the beginning
> of the second field:
>
> $ printf '%s\t%s\n' a 1 a 2 | grep --color=always a$'\t' | od -tc -An
> 033 [ 0 1 ; 3 1 m 033 [ K a \t 033 [ m
> 033 [ K 1 \n 033 [ 0 1 ; 3 1 m 033 [ K
> a \t 033 [ m 033 [ K 2 \n
>
> And annotated:
>
> First line, first field:
> 033 [ 0 1 ; 3 1 m 033 [ K a
> \t
>
> First line, second field:
> 033 [ m 033 [ K 1
> \n
>
> Second line, first field:
> 033 [ 0 1 ; 3 1 m 033 [ K a
> \t
>
> Second line, second field:
> 033 [ m 033 [ K 2
> \n
>
>
> Using "--debug" will give a hint as to what went wrong:
>
> $ printf '%s\t%s\n' a 1 a 2 | grep --color=always a$'\t' \
> | sort -k2,2nr --debug
> sort: using ‘en_CA.utf8’ sorting rules
> a>1
> ^ no match for key
> ________________
> a>2
> ^ no match for key
> ________________
>
>
> The "no match for key" message means that the 2nd field failed to be
> parsed as a numeric value.
>
>
>
> regards,
> -assaf
>
--
Regards,
Peng