Format output to a specific line length

16,129

Solution 1

Use fmt instead:

fmt --width=80 file

From man fmt:

-w, --width=WIDTH
              maximum line width (default of 75 columns)

Solution 2

Use fold as follows:

fold -s -w80 file

This will only split at whitespace (-s), using a line width of 80 characters (-w80). So it does exactly the same as the fmt solutions, but it also allows to break at any character when omitting the -s option.

Solution 3

Below mentioned solution might help:

cat file_name.txt | fmt -w 80 > reduced_file_name.txt

fmt - simple optimal text formatter.

Share:
16,129

Related videos on Youtube

ArrowCase
Author by

ArrowCase

Updated on September 18, 2022

Comments

  • ArrowCase
    ArrowCase over 1 year

    So I have some output that has very long lines, and I want to have it formatted to lines no more than 80 columns wide, but I don't want to split words because they are in the column limit.

    I tried

    sed 's/.\{80\}/&\n/g' 
    

    but has the problem of splitting words and making some lines begin with a space.

    I managed to do it with Vim, setting textwidth to 80, going to the beginnig of the file and executing gqG to format the text. But ¡ would rather do it with sed, awk or something similar to include it in a script.

    • Celada
      Celada almost 10 years
      Why don't you use fmt?
    • ArrowCase
      ArrowCase almost 10 years
      @Celada Because I didn't know of its existence :)
  • Admin
    Admin almost 6 years
    This is the best answer considering fmt merges separate lines by eating new lines.