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 |
---|
37 | rs \- 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 |
---|
42 | reads the standard input, interpreting each line as a row |
---|
43 | of blank-separated entries in an array, |
---|
44 | transforms the array according to the options, |
---|
45 | and writes it on the standard output. |
---|
46 | With no arguments it transforms stream input into a columnar |
---|
47 | format convenient for terminal viewing. |
---|
48 | .PP |
---|
49 | The shape of the input array is deduced from the number of lines |
---|
50 | and the number of columns on the first line. |
---|
51 | If that shape is inconvenient, a more useful one might be |
---|
52 | obtained by skipping some of the input with the \fB\-k\fP option. |
---|
53 | Other options control interpretation of the input columns. |
---|
54 | .PP |
---|
55 | The shape of the output array is influenced by the |
---|
56 | .I rows |
---|
57 | and |
---|
58 | .I cols |
---|
59 | specifications, which should be positive integers. |
---|
60 | If only one of them is a positive integer, |
---|
61 | .I rs |
---|
62 | computes a value for the other which will accommodate |
---|
63 | all of the data. |
---|
64 | When necessary, missing data are supplied in a manner |
---|
65 | specified by the options and surplus data are deleted. |
---|
66 | There are options to control presentation of the output columns, |
---|
67 | including transposition of the rows and columns. |
---|
68 | .PP |
---|
69 | The options are described below. |
---|
70 | .IP \fB\-c\fRx |
---|
71 | Input columns are delimited by the single character \fIx\fP. |
---|
72 | A missing \fIx\fP is taken to be `^I'. |
---|
73 | .IP \fB\-s\fRx |
---|
74 | Like \fB\-c\fR, but maximal strings of \fIx\fP are delimiters. |
---|
75 | .IP \fB\-C\fRx |
---|
76 | Output columns are delimited by the single character \fIx\fP. |
---|
77 | A missing \fIx\fP is taken to be `^I'. |
---|
78 | .IP \fB\-S\fRx |
---|
79 | Like \fB\-C\fR, but padded strings of \fIx\fP are delimiters. |
---|
80 | .IP \fB\-t\fR |
---|
81 | Fill in the rows of the output array using the columns of the |
---|
82 | input array, that is, transpose the input while honoring any |
---|
83 | .I rows |
---|
84 | and |
---|
85 | .I cols |
---|
86 | specifications. |
---|
87 | .IP \fB\-T\fR |
---|
88 | Print the pure transpose of the input, ignoring any |
---|
89 | .I rows |
---|
90 | or |
---|
91 | .I cols |
---|
92 | specification. |
---|
93 | .IP \fB\-k\fRN |
---|
94 | Ignore the first \fIN\fR lines of input. |
---|
95 | .IP \fB\-K\fRN |
---|
96 | Like \fB\-k\fR, but print the ignored lines. |
---|
97 | .IP \fB\-g\fRN |
---|
98 | The gutter width (inter-column space), normally 2, is taken to be \fIN\fR. |
---|
99 | .IP \fB\-G\fRN |
---|
100 | The gutter width has \fIN\fR percent of the maximum |
---|
101 | column width added to it. |
---|
102 | .IP \fB\-e\fR |
---|
103 | Consider each line of input as an array entry. |
---|
104 | .IP \fB\-n\fR |
---|
105 | On lines having fewer entries than the first line, |
---|
106 | use null entries to pad out the line. |
---|
107 | Normally, missing entries are taken from the next line of input. |
---|
108 | .IP \fB\-y\fR |
---|
109 | If there are too few entries to make up the output dimensions, |
---|
110 | pad the output by recycling the input from the beginning. |
---|
111 | Normally, the output is padded with blanks. |
---|
112 | .IP \fB\-h\fR |
---|
113 | Print the shape of the input array and do nothing else. |
---|
114 | The shape is just the number of lines and the number of |
---|
115 | entries on the first line. |
---|
116 | .IP \fB\-H\fR |
---|
117 | Like \fB\-h\fR, but also print the length of each line. |
---|
118 | .IP \fB\-j\fR |
---|
119 | Right adjust entries within columns. |
---|
120 | .IP \fB\-w\fRN |
---|
121 | The width of the display, normally 80, is taken to be the positive |
---|
122 | integer \fIN\fP. |
---|
123 | .IP \fB\-m\fR |
---|
124 | Do not trim excess delimiters from the ends of the output array. |
---|
125 | .IP \fB\-z\fR |
---|
126 | Adapt column widths to fit the largest entries appearing in them. |
---|
127 | .PP |
---|
128 | With no arguments, |
---|
129 | .I rs |
---|
130 | transposes its input, and assumes one array entry per input line |
---|
131 | unless the first non-ignored line is longer than the display width. |
---|
132 | Option letters which take numerical arguments interpret a missing |
---|
133 | number 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 |
---|
146 | can be used as a filter to convert the stream output |
---|
147 | of certain programs (e.g., |
---|
148 | .IR spell , |
---|
149 | .IR du , |
---|
150 | .IR file , |
---|
151 | .IR look , |
---|
152 | .IR nm , |
---|
153 | .IR who , |
---|
154 | and |
---|
155 | .IR wc (1)) |
---|
156 | into a convenient ``window'' format, as in |
---|
157 | .IC |
---|
158 | who | rs |
---|
159 | .NC |
---|
160 | This function has been incorporated into the |
---|
161 | .IR ls (1) |
---|
162 | program, though for most programs with similar output |
---|
163 | .I rs |
---|
164 | suffices. |
---|
165 | .PP |
---|
166 | To convert stream input into vector output and back again, use |
---|
167 | .IC |
---|
168 | rs 1 0 | rs 0 1 |
---|
169 | .NC |
---|
170 | A 10 by 10 array of random numbers from 1 to 100 and |
---|
171 | its transpose can be generated with |
---|
172 | .IC |
---|
173 | jot \-r 100 | rs 10 10 | tee array | rs \-T > tarray |
---|
174 | .NC |
---|
175 | In the editor |
---|
176 | .IR vi (1), |
---|
177 | a file consisting of a multi-line vector with 9 elements per line |
---|
178 | can undergo insertions and deletions, |
---|
179 | and then be neatly reshaped into 9 columns with |
---|
180 | .IC |
---|
181 | :1,$!rs 0 9 |
---|
182 | .NC |
---|
183 | Finally, to sort a database by the first line of each 4-line field, try |
---|
184 | .IC |
---|
185 | rs \-eC 0 4 | sort | rs \-c 0 1 |
---|
186 | .NC |
---|
187 | .SH SEE ALSO |
---|
188 | jot(1), vi(1), sort(1), pr(1) |
---|
189 | .SH BUGS |
---|
190 | Handles only two dimensional arrays. |
---|
191 | |
---|
192 | The algorithm currently reads the whole file into memory, |
---|
193 | so files that do not fit in memory will not be reshaped. |
---|
194 | |
---|
195 | Fields cannot be defined yet on character positions. |
---|
196 | |
---|
197 | Re-ordering of columns is not yet possible. |
---|
198 | |
---|
199 | There are too many options. |
---|