|
|
1.1 ! root 1: .TH SORT 1 ! 2: .CT 1 files ! 3: .SH NAME ! 4: sort \- sort and/or merge files ! 5: .SH SYNOPSIS ! 6: .B sort ! 7: [ ! 8: .BI -cmusMbdf\&inrt x ! 9: ] ! 10: [ ! 11: .B -o ! 12: .I output ! 13: ] ! 14: [ ! 15: .I option ... ! 16: ] ! 17: [ ! 18: .I file ... ! 19: ] ! 20: .SH DESCRIPTION ! 21: .I Sort\^ ! 22: sorts ! 23: lines of all the ! 24: .I files ! 25: together and writes the result on ! 26: the standard output. ! 27: The name ! 28: .B - ! 29: means ! 30: the standard input. ! 31: If no input files are named, the standard input is sorted. ! 32: .PP ! 33: The default sort key is an entire line. ! 34: Default ordering is ! 35: lexicographic by bytes in machine ! 36: collating sequence. ! 37: The ordering is affected globally by the following options, ! 38: one or more of which may appear. ! 39: .TP ! 40: .B -b ! 41: Ignore leading white space (spaces and tabs) in field comparisons. ! 42: .TP ! 43: .B -d ! 44: `Phone directory' order: only letters, digits and white space ! 45: are significant in string comparisons. ! 46: .TP ! 47: .B -f ! 48: Fold lower case ! 49: letters onto upper case. ! 50: .TP ! 51: .B -i ! 52: Ignore characters outside the ! 53: .SM ASCII ! 54: range 040-0176 ! 55: in string comparisons. ! 56: .TP ! 57: .B -n ! 58: An initial numeric string, ! 59: consisting of optional white space, optional sign, and ! 60: a nonempty string of digits with optional decimal point, ! 61: is sorted by value. ! 62: .TP ! 63: .B -g ! 64: Numeric, like ! 65: .BR -n , ! 66: with ! 67: .BR e -style ! 68: exponents allowed. ! 69: .TP ! 70: .B -M ! 71: Compare as month names. ! 72: The first three ! 73: characters after optional white space ! 74: are folded to lower case and compared. ! 75: Invalid fields compare low to ! 76: .LR jan . ! 77: .TP ! 78: .B -r ! 79: Reverse the sense of comparisons. ! 80: .TP ! 81: .BI -t x\^ ! 82: `Tab character' separating fields is ! 83: .IR x . ! 84: .TP ! 85: .BI -k " pos1" , pos2 ! 86: Restrict the sort key to a string beginning at ! 87: .I pos1\^ ! 88: and ending at ! 89: .IR pos2 . ! 90: .I Pos1\^ ! 91: and ! 92: .I pos2\^ ! 93: each have the form ! 94: .IB m . n , ! 95: optionally followed by one or more of the flags ! 96: .BR Mbdfginr ; ! 97: .I m\^ ! 98: counts fields from the beginning of the line and ! 99: .I n\^ ! 100: counts characters from the beginning of the field. ! 101: If any flags are present they override all the global ! 102: ordering options for this key. ! 103: If ! 104: .BI \&. n\^ ! 105: is missing from ! 106: .I pos1, ! 107: it is taken to be 1; if missing from ! 108: .IR pos2, ! 109: it is taken to be the end of the field. ! 110: If ! 111: .I pos2 ! 112: is missing, it is taken to be end of line. ! 113: .TP ! 114: .BI -a " pos1" , pos2 ! 115: .IB Pos1 , pos2 ! 116: designates an accumulating ! 117: .BR -n -style ! 118: field, disjoint from the sort key. ! 119: When the keys of two records compare equal, ! 120: discard the second and replace the ! 121: accumulating field in the first with the sum of ! 122: that field in both. ! 123: The receiving field must be large enough for the sum ! 124: to fit without destroying any field separator. ! 125: The sum has a ones digit always, a decimal point if ! 126: either addend has one, a fraction part as long as ! 127: that of either addend, leading zeros padded to full ! 128: field width if either addend has a leading zero ! 129: before the ones digit, and a ! 130: .B + ! 131: sign if either addend has a ! 132: .B + ! 133: sign and the sum is not negative. ! 134: .PP ! 135: Under option ! 136: .BI -t x\^ ! 137: fields are strings separated by ! 138: .IR x ; ! 139: otherwise fields are ! 140: non-empty strings separated by white space. ! 141: White space before a field ! 142: is part of the field, except under option ! 143: .BR -b . ! 144: A ! 145: .B b ! 146: flag may be attached independently to ! 147: .IR pos1 ! 148: and ! 149: .IR pos2. ! 150: .PP ! 151: When there are multiple sort keys, later keys ! 152: are compared only after all earlier keys ! 153: compare equal. ! 154: Except under option ! 155: .BR -s , ! 156: lines with all keys equal are ordered ! 157: with all bytes significant. ! 158: .PP ! 159: Single-letter options may be combined into a single ! 160: string, such as ! 161: .BR -cnrt: . ! 162: The option combination ! 163: .B -di ! 164: and the combination of ! 165: .B -n ! 166: with any of ! 167: .BR -diM ! 168: are improper. ! 169: .PP ! 170: These option arguments are also understood: ! 171: .TP ! 172: .B -c ! 173: Check that the single input file is sorted according to the ordering rules; ! 174: give no output unless the file is out of sort. ! 175: .TP ! 176: .B -m ! 177: Merge; the input files are already sorted. ! 178: .TP ! 179: .B -u ! 180: Unique. Keep only the first of two lines ! 181: that compare equal on all keys. ! 182: Implies ! 183: .BR -s . ! 184: .TP ! 185: .B -s ! 186: Stable sort. ! 187: When all keys compare equal, preserve input order. ! 188: Unaffected by ! 189: .BR -r . ! 190: .TP ! 191: .BI -o " output ! 192: Place output in a designated file ! 193: instead of on the standard output. ! 194: This file may be the same as one of the inputs. ! 195: The option may appear among the ! 196: .I file ! 197: arguments, except after ! 198: .BR -- . ! 199: .TP ! 200: .BI + pos1 " -" pos2 ! 201: Classical alternative to ! 202: .BR -k , ! 203: with counting from 0 instead of 1, and ! 204: .I pos2 ! 205: designating next-after-last instead of last character of the key. ! 206: A missing character count in ! 207: .I pos2 ! 208: means 0, which in turn excludes any ! 209: .B -t ! 210: tab character from the end of the key. ! 211: Thus ! 212: .B "+1\ -1.3" ! 213: means the same as ! 214: .B -k\ 2,2.3 ! 215: and ! 216: .B "+1r\ -3" ! 217: means the same as ! 218: .BR "-k\ 2r,3" . ! 219: .PP ! 220: Options ! 221: .BR -a , ! 222: .BR -g , ! 223: .BR -M , ! 224: and ! 225: .BR -s ! 226: are not in the Posix standard, nor are ! 227: the following tuning options. ! 228: .TP ! 229: .BI -T " tempdir ! 230: Put temporary files in ! 231: .I tempdir ! 232: rather than in ! 233: .BR /usr/tmp . ! 234: .TP ! 235: .BI -y " n" ! 236: Use up to ! 237: .I n ! 238: bytes of internal store, or a huge number if ! 239: .IR n =0. ! 240: .TP ! 241: .B -w " n" ! 242: Merge up to ! 243: .I n ! 244: files at a time. ! 245: .ig ! 246: .TP ! 247: .BI -z recsize ! 248: Provide for abnormally large records; ! 249: useful only with ! 250: .B -c ! 251: and ! 252: .B -m ! 253: .. ! 254: .SH EXAMPLES ! 255: .TP ! 256: .B sort -u -k1f -k1 list ! 257: Print in alphabetical order all the unique spellings ! 258: in a list of words ! 259: where capitalized words differ from uncapitalized. ! 260: .TP ! 261: .B sort -t: -k3n /etc/passwd ! 262: Print the password file ! 263: .RI ( passwd (5)) ! 264: sorted by userid ! 265: (the third colon-separated field). ! 266: .TP ! 267: .B sort -umM dates ! 268: Print the first instance of each month in an already sorted file. ! 269: .TP ! 270: .B sort -k1,1 -a2,2 items_and_costs ! 271: Reduce a file of items (field 1) and costs (field 2) to ! 272: a summary file of total cost per type of item. ! 273: .SH FILES ! 274: .F /usr/tmp/stm??? ! 275: .SH SEE ALSO ! 276: .IR comm (1), ! 277: .IR join (1), ! 278: .IR uniq (1), ! 279: .IR look (1) ! 280: .SH DIAGNOSTICS ! 281: .I Sort ! 282: comments and exits with non-zero status for various trouble ! 283: conditions and for disorder discovered under option ! 284: .BR -c . ! 285: Overflow in a ! 286: .B -a ! 287: field warns and leaves ! 288: the record uncombined. ! 289: .SH BUGS ! 290: When ! 291: .BR -o ! 292: overwrites an input file, ! 293: premature termination by interrupt, ! 294: crash or file-system overflow can destroy data. ! 295: .br ! 296: Overflow in any but the first of multiple ! 297: .B -a ! 298: fields is fatal. ! 299: .br ! 300: Perhaps fields delimited by ! 301: .BR -t ! 302: should grow to avoid ! 303: .B -a ! 304: overflows.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.