Format output to a specific line length
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.
Related videos on Youtube
ArrowCase
Updated on September 18, 2022Comments
-
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 executinggqG
to format the text. But ¡ would rather do it withsed
,awk
or something similar to include it in a script.-
Celada almost 10 yearsWhy don't you use
fmt
? -
ArrowCase almost 10 years@Celada Because I didn't know of its existence :)
-
-
Admin almost 6 yearsThis is the best answer considering
fmt
merges separate lines by eating new lines.