1

I know that pr -m -t file1 file2 will give me 2 columns like so:

file1:

a
abc
abcdefg
abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz

file2:

1
123
12345678
12345678901234567890

-

$ pr -m -t file1 file2
a                   1
abc                 123
abcdefg                 12345678
abcdefghijklmnopqrstuvwxyzabcdefghi 12345678901234567890

Above is a literal cut and paste, but here I added spaces to show how it really lines up in the terminal:

$ pr -m -t file1 file2
a                                   1
abc                                 123
abcdefg                             12345678
abcdefghijklmnopqrstuvwxyzabcdefghi 12345678901234567890

For some reason, unix stack exchange doesn't make the code blocks solid. Anyway, I don't need the line numbers to match up (but to answer the general question, you could also answer how to do that) but the main property I want is to make it so that the lines wrap instead of getting truncated. Do I have no choice but to preprocess each file to a certain width and pipe that in? If so, how would I even do that?

Update: I suppose if there was some command which restricted the width of a file and forced wrapping into new lines, I'd do: pr -m -t <(command file1) <(command file2)

4
  • what is your desired output? Apr 18, 2018 at 21:14
  • 1
    Do you want something like paste file1 file2 or paste file1 file2 | column -t? Apr 18, 2018 at 21:15
  • 1
    Or adding a -J to your pr command (to join full lines and not truncate) Apr 18, 2018 at 21:16
  • I suspect the misalignment on posting is because pr uses tabs. In your terminal they expand to 8-column format, but the forum expands tabs to 4-column format. I paste my terminal text through xed, which expands tabs and does block indent for code blocks. Apr 2, 2020 at 20:02

1 Answer 1

0

EDIT:

Care about alignment?

If you take the perl script found here, written by Peter Stuifzand, and were to name it columnFix.perl and chmod u+x columnFix.perl (to be sure you can execute it, you can do this:

pr -J -m -t file1 file2 | /path/to/columnFix.perl

Original answer:

The versions of pr I have truncate lines by default to 72 characters, with 2 columns that cuts the first column to 35 (35 char/column * 2 columns) + 1 char/separator = 71 characters (so the second column is possibly 36 characters).

So the same command you've run but with a -J should do what you seem to be looking for (with as close to your original command as possible) if you are fine with no column alignment (this is a similar result to the paste command suggested in comments)

pr -J -m -t file1 file2

From the man page:

-J, --join-line

merge full lines, turns off -W line truncation, no column alignment, --sep-string[=STRING] sets separators

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .