ROT

Section: User Commands (1)
Updated: public

NAME

rotate - rotate a file

SYNOPSIS

rotate [-rbloB] [-c c] [file]

DESCRIPTION

rotate rotates a file, so that lines become columns and vice versa. Without any options, the file will be rotated clockwise. So, from the input

abcde
abcd
abc
ab
a
   xx xx
A
AB
ABC
ABCD
ABCDE


you will get AAAAA aaaaa BBBB   bbbb CCC     ccc DD   x   dd E    x    e             x      x
rotate uses a two pass algorithm, where the first part collects the line length of each line in the input, and the second prints out the new lines, seeking through the input file. When no file or - is given, rotate reads from standard input.

OPTIONS

-r
rotate reverse (counter-clockwise)
-b
normally, rotate suppresses printing of trailing blanks in output lines. This option retains them, so all blanks of the input will appear in the output
-l
do only the first pass and print the number of lines and the length of the longest line found to standard output
-o
change order of columns; in combination with the rotation this yields one more file operation (see below)
-B
this is for big files; the data will be hold in temporary files rather than in memory; this slows down rotate enormously
-c c
use c as "line"-separator, instead of the newline character
 

REMARKS

One may ask, what rot is useful for. Think about the functionality of programs like cat(1), or the line oriented grep(1), cut(1), sed(1), sort(1), and others, when applied to a rotated file. In conjunction with rotate they do not longer work on lines, but columns. For example
           rotate f | grep ... | rotate -r is a grep on columns of the file f. The -o option permits you to manipulate a file in some way of "reflecting" it in a "diagonal" line. The following table shows the different effects of rotate called with various options. Data manipulation is shown by means of the output of a file with the contents
           AB

           CD and a symbolic notation. R means Rotation (angle given), M means reflection at given mirror axis. Combinations of two calls of rotate are also given. (Other combinations have identical effects to one of the mentioned.)

calloutputfunction


rotateCAR
DB-90 deg

rotate -rBDR
AC90 deg

rotate -oDBM
CA/

rotate -roACM
BD\


rotate | rotateDCR
BA180 deg

rotate | rotate -rAB(Id) *
CD

rotate | rotate -oBAM **
DC|

rot | rot -roCDM
AB-

* Note, that rotate|rotate -r (or rotate|rotate|rotate|rotate) is not exactly the null operator. rotate must insert blanks to keep track of the columns. They may appear at the end of lines in a further run of rotate, if the -b option is given. Without this option blanks from the original input may be lost. ** This is not the same as what is done by rev(1). Rev does not retain columns!

rotate knows nothing about tab characters, use expand(1) to handle them correctly.  

FILES

/tmp/rot* -
temporarily copied input, if standard input is incapable of seeking (pipe or terminal) (-B option only)
/tmp/rod* -
tempfile for holding length of input lines (-B option only)
 

SEE ALSO

rev(1), tail(1bsd), tac(1public), expand(1), colrm(1)  

AUTHOR

Martin Schmidt
Dortmund - W. Germany
mschmidt@exunido.uucp
cLIeNUX note; Schmidt calls this program "rot".