tags:

views:

104

answers:

6

is there one?

something I could use like this:

$ cat someFileWithLongLines.txt | wrap -80 --indent|less
+1  A: 

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.

anthony
+4  A: 

You might want the fold command.

$ fold -w 80 file.txt

or

$ cat file.txt | fold
The MYYN
+1  A: 

The command is called fold.

$ cat someFileWithLongLines.txt | fold

Christian Vik
A: 

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
ghostdog74
+2  A: 

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

$ fold -w 76 -s file.txt | pr -T --indent=4
Hasturkun
+4  A: 

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
Dennis Williamson
fold also has the `-s` option, which breaks at spaces instead.
Hasturkun
Thanks, I missed that.
Dennis Williamson