atrent
atrent

Reputation: 135

Unix "wrap" filter

is there one?

something I could use like this:

$ cat someFileWithLongLines.txt | wrap -80 --indent|less

Upvotes: 7

Views: 3295

Answers (7)

Joshua Goldberg
Joshua Goldberg

Reputation: 5353

Another alternative is a gnu utility called columns (not to be confused with another standard unix command, column)

Using a very large width like this can remove wrapping entirely:

columns --fill -W 10000 < file.txt

(Part of the autogen package.)

Upvotes: 0

Dennis Williamson
Dennis Williamson

Reputation: 360605

GNU coreutils has a command called fmt:

$ fmt -40 -t lorem
Lorem ipsum dolor sit amet, consectetur
   adipisicing elit, sed do eiusmod
   tempor incididunt ut labore et
   dolore magna aliqua. Ut enim
   ad minim veniam, quis nostrud
   exercitation ullamco laboris
   nisi ut aliquip ex ea commodo
   consequat. Duis aute irure dolor
   in reprehenderit in voluptate velit
   esse cillum dolore eu fugiat nulla
   pariatur. Excepteur sint occaecat
   cupidatat non proident, sunt in
   culpa qui officia deserunt mollit
   anim id est laborum.

Edit: As you can see, fmt breaks lines on word boundaries within the given width. Contrast this with the hard boundary of fold. The type of indenting that fmt does may not be what you're looking for, but you can pipe it (without the -t option) through pr to get a margin-style indent:

fmt -40 lorem | pr -To 6

Upvotes: 15

Hasturkun
Hasturkun

Reputation: 36422

You can indent with pr, if you like, eg.

$ fold -w 76 -s file.txt | pr -T --indent=4

Upvotes: 2

ghostdog74
ghostdog74

Reputation: 342949

you can use awk

width=10
awk -vw="$width" '{
    i=1
    while( length(substr($0,i,w) ) ){
        print substr($0,i,w)
        i+=w
    }
}' file

output:

$ more file
this is a line 1
this is a line 2
$ fold -w 10 file
this is a
line 1
this is a
line 2
$ ./shell.sh
this is a
line 1
this is a
line 2

Upvotes: 0

miku
miku

Reputation: 188164

You might want the fold command.

$ fold -w 80 file.txt

or

$ cat file.txt | fold

Upvotes: 6

Christian V
Christian V

Reputation: 2040

The command is called fold.

$ cat someFileWithLongLines.txt | fold

Upvotes: 1

anthony
anthony

Reputation: 41118

The command is called 'fold', but it does not support indenting the wrapped sections of lines. You'll need to bust out awk for that one.

Upvotes: 1

Related Questions