source: trunk/third/rs/rs.1 @ 9071

Revision 9071, 6.5 KB checked in by ghudson, 28 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r9070, which included commits to RCS files with non-trunk default branches.
Line 
1.\" Copyright (c) 1993
2.\"     The Regents of the University of California.  All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\" 3. All advertising materials mentioning features or use of this software
13.\"    must display the following acknowledgement:
14.\"     This product includes software developed by the University of
15.\"     California, Berkeley and its contributors.
16.\" 4. Neither the name of the University nor the names of its contributors
17.\"    may be used to endorse or promote products derived from this software
18.\"    without specific prior written permission.
19.\"
20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30.\" SUCH DAMAGE.
31.\"
32.\"     @(#)rs.1        8.2 (Berkeley) 12/30/93
33.\"
34.TH RS 1 "December 30, 1993"
35.UC 4
36.SH NAME
37rs \- reshape a data array
38.SH SYNOPSIS
39\fBrs [ \-[csCS][\fRx\fB][kKgGw][\fRN\fB]tTeEnyjhHm ] [ \fRrows\fB [ \fRcols\fB ] ]\fR
40.SH DESCRIPTION
41.I Rs
42reads the standard input, interpreting each line as a row
43of blank-separated entries in an array,
44transforms the array according to the options,
45and writes it on the standard output.
46With no arguments it transforms stream input into a columnar
47format convenient for terminal viewing.
48.PP
49The shape of the input array is deduced from the number of lines
50and the number of columns on the first line.
51If that shape is inconvenient, a more useful one might be
52obtained by skipping some of the input with the \fB\-k\fP option.
53Other options control interpretation of the input columns.
54.PP
55The shape of the output array is influenced by the
56.I rows
57and
58.I cols
59specifications, which should be positive integers.
60If only one of them is a positive integer,
61.I rs
62computes a value for the other which will accommodate
63all of the data.
64When necessary, missing data are supplied in a manner
65specified by the options and surplus data are deleted.
66There are options to control presentation of the output columns,
67including transposition of the rows and columns.
68.PP
69The options are described below.
70.IP \fB\-c\fRx
71Input columns are delimited by the single character \fIx\fP.
72A missing \fIx\fP is taken to be `^I'.
73.IP \fB\-s\fRx
74Like \fB\-c\fR, but maximal strings of \fIx\fP are delimiters.
75.IP \fB\-C\fRx
76Output columns are delimited by the single character \fIx\fP.
77A missing \fIx\fP is taken to be `^I'.
78.IP \fB\-S\fRx
79Like \fB\-C\fR, but padded strings of \fIx\fP are delimiters.
80.IP \fB\-t\fR
81Fill in the rows of the output array using the columns of the
82input array, that is, transpose the input while honoring any
83.I rows
84and
85.I cols
86specifications.
87.IP \fB\-T\fR
88Print the pure transpose of the input, ignoring any
89.I rows
90or
91.I cols
92specification.
93.IP \fB\-k\fRN
94Ignore the first \fIN\fR lines of input.
95.IP \fB\-K\fRN
96Like \fB\-k\fR, but print the ignored lines.
97.IP \fB\-g\fRN
98The gutter width (inter-column space), normally 2, is taken to be \fIN\fR.
99.IP \fB\-G\fRN
100The gutter width has \fIN\fR percent of the maximum
101column width added to it.
102.IP \fB\-e\fR
103Consider each line of input as an array entry.
104.IP \fB\-n\fR
105On lines having fewer entries than the first line,
106use null entries to pad out the line.
107Normally, missing entries are taken from the next line of input.
108.IP \fB\-y\fR
109If there are too few entries to make up the output dimensions,
110pad the output by recycling the input from the beginning.
111Normally, the output is padded with blanks.
112.IP \fB\-h\fR
113Print the shape of the input array and do nothing else.
114The shape is just the number of lines and the number of
115entries on the first line.
116.IP \fB\-H\fR
117Like \fB\-h\fR, but also print the length of each line.
118.IP \fB\-j\fR
119Right adjust entries within columns.
120.IP \fB\-w\fRN
121The width of the display, normally 80, is taken to be the positive
122integer \fIN\fP.
123.IP \fB\-m\fR
124Do not trim excess delimiters from the ends of the output array.
125.IP \fB\-z\fR
126Adapt column widths to fit the largest entries appearing in them.
127.PP
128With no arguments,
129.I rs
130transposes its input, and assumes one array entry per input line
131unless the first non-ignored line is longer than the display width.
132Option letters which take numerical arguments interpret a missing
133number as zero unless otherwise indicated.
134.SH EXAMPLES
135.de IC
136.IP
137.ss 36
138.ft B
139..
140.de NC
141.br
142.ss 12
143.PP
144..
145.I Rs
146can be used as a filter to convert the stream output
147of certain programs (e.g.,
148.IR spell ,
149.IR du ,
150.IR file ,
151.IR look ,
152.IR nm ,
153.IR who ,
154and
155.IR wc (1))
156into a convenient ``window'' format, as in
157.IC
158who | rs
159.NC
160This function has been incorporated into the
161.IR ls (1)
162program, though for most programs with similar output
163.I rs
164suffices.
165.PP
166To convert stream input into vector output and back again, use
167.IC
168rs 1 0 | rs 0 1
169.NC
170A 10 by 10 array of random numbers from 1 to 100 and
171its transpose can be generated with
172.IC
173jot \-r 100 | rs 10 10 | tee array | rs \-T > tarray
174.NC
175In the editor
176.IR vi (1),
177a file consisting of a multi-line vector with 9 elements per line
178can undergo insertions and deletions,
179and then be neatly reshaped into 9 columns with
180.IC
181:1,$!rs 0 9
182.NC
183Finally, to sort a database by the first line of each 4-line field, try
184.IC
185rs \-eC 0 4 | sort | rs \-c 0 1
186.NC
187.SH SEE ALSO
188jot(1), vi(1), sort(1), pr(1)
189.SH BUGS
190Handles only two dimensional arrays.
191
192The algorithm currently reads the whole file into memory,
193so files that do not fit in memory will not be reshaped.
194
195Fields cannot be defined yet on character positions.
196
197Re-ordering of columns is not yet possible.
198
199There are too many options.
Note: See TracBrowser for help on using the repository browser.