2

Consider this usage of rs(1):

rs -n -z -c, <<CSV
a,b,c
dd,ee,ff
CSV

The above snippet emits:

a  b  c  dd  ee  ff

But I was expecting to see something like this:

a   b   c
dd  ee  ff

The manual suggests that the output array shape should match the input array shape unless configured otherwise.

rs -h using the same input emits 2 3, which suggests that rs does correctly identify the input array shape.

What am I misunderstanding in the usage of rs? Is there a way to have it automatically format the output with the same shape as the input?

7
  • 1
    It's an ugly hack, but doing a -T (pure transpose) then piping the result through a second rs -T seems to work for me Commented Jan 31, 2023 at 22:09
  • 1
    Not answering your rs question but column -s, -t <<CSV ... does what you want. Commented Feb 1, 2023 at 3:00
  • @glennjackman I had problems with column when a leading cell is "blank", which is how I found rs in the first place! I made a follow-up question about it: unix.stackexchange.com/q/733969/73256 Commented Feb 1, 2023 at 16:27
  • Actually, rs has the same problem as column in that example! It's a little surprising that these basic tools behave so weirdly. I'm tempted to write my own AWK script and ignore all these. Commented Feb 1, 2023 at 16:27
  • rs is used to reshape data. It seems that you don't actually want to reshape the data, which in turn means rs might be the wrong tool for the job.
    – Kusalananda
    Commented Feb 13, 2023 at 12:10

1 Answer 1

2

column does not behave as expected with leading empty fields. You might want this

awk 'BEGIN {FS = ","; OFS = "\t"} {$1 = $1} 1' <<DATA
a,b,c
,x,y
dd,ee,ff
DATA
a   b   c
    x   y
dd  ee  ff

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.