[Top][All Lists]

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

bug#30430: [column] accounting for ansi color codes

From: Bernhard Voelker
Subject: bug#30430: [column] accounting for ansi color codes
Date: Mon, 12 Feb 2018 08:23:29 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0

On 02/12/2018 07:07 AM, Boruch Baum wrote:
The `column -t' command doesn't align input properly when that input
includes ansi color codes.

An argument that it should do so, is that `column' serves to make input
more readable, and easier to find and compare fields of input data - the
same goal as colorization.

I encountered this when trying to columnate log output that had been fed
through the colorization program `ccze'.

Example: Compare the output of the following two one-liners:

  awk '{sub("install|configure|upgrade|trigproc","& _",$3);print}' \
  /var/log/dpkg.log | column -t

  awk '{sub("install|configure|upgrade|trigproc","& _",$3);print}' \
  /var/log/dpkg.log | ccze -m ansi -o noscroll >&1 | column -t

Unfortunately, you did not show us neither the input - and I don't
have dpkg -, nor the output, so I'd have to guess what you think
might be going wrong.

Would you provide a simple reproducer, please?

In the following example, column(1) produces correct output:

  $ printf "%s\n"                \
      "this_is_a_long_string 99" \
      "short abcdefghijklmnop"   \
      | ccze -m ansi -o noscroll \
      | column -t
  this_is_a_long_string  99
  short                  abcdefghijklmnop

FWIW: what happens if you switch the two formatting commands, i.e., use

  $ ... | column -t | ccze ...

instead of

  $ ... | ccze .... | column -t

At least when the input uses a different separator, then you'd have to
do that anyway - otherwise the separation of the columns is messed;

  $ head -n3 /etc/passwd | ccze -m ansi -o noscroll | column -t -s:

  $ head -n3 /etc/passwd | column -t -s: | ccze -m ansi -o noscroll

Is that the same what's happening to you?

Have a nice day,

reply via email to

[Prev in Thread] Current Thread [Next in Thread]