|
|
1.1 ! root 1: .\" Copyright (c) 1990 Regents of the University of California. ! 2: .\" All rights reserved. The Berkeley software License Agreement ! 3: .\" specifies the terms and conditions for redistribution. ! 4: .\" ! 5: .\" @(#)sed.1 6.3 (Berkeley) 6/24/90 ! 6: .\" ! 7: .TH SED 1 "%Q" ! 8: .AT 3 ! 9: .SH NAME ! 10: sed \- stream editor ! 11: .SH SYNOPSIS ! 12: .B sed ! 13: [ ! 14: .B \-n ! 15: ] ! 16: [ ! 17: .B \-e ! 18: script ] [ ! 19: .B \-f ! 20: sfile ] [ file ] ... ! 21: .SH DESCRIPTION ! 22: .I Sed ! 23: copies the named ! 24: .I files ! 25: (standard input default) to the standard output, ! 26: edited according to a script of commands. ! 27: The ! 28: .B \-f ! 29: option causes the script to be taken from file ! 30: .IR sfile ; ! 31: these options accumulate. ! 32: If there is just one ! 33: .B \-e ! 34: option and no ! 35: .BR \-f 's, ! 36: the flag ! 37: .B \-e ! 38: may be omitted. ! 39: The ! 40: .B \-n ! 41: option suppresses the default output. ! 42: .PP ! 43: A script consists of editing commands, one per line, ! 44: of the following form: ! 45: .IP ! 46: [address [, address] ] function [arguments] ! 47: .PP ! 48: In normal operation ! 49: .I sed ! 50: cyclically copies a line of input into a ! 51: .I pattern space ! 52: (unless there is something left after ! 53: a `D' command), ! 54: applies in sequence ! 55: all commands whose ! 56: .I addresses ! 57: select that pattern space, ! 58: and at the end of the script copies the pattern space ! 59: to the standard output (except under ! 60: .BR \-n ) ! 61: and deletes the pattern space. ! 62: .PP ! 63: An ! 64: .I address ! 65: is either a decimal number that counts ! 66: input lines cumulatively across files, a `$' that ! 67: addresses the last line of input, or a context address, ! 68: `/regular expression/', in the style of ! 69: .IR ed (1) ! 70: modified thus: ! 71: .IP ! 72: The escape sequence `\en' matches a ! 73: newline embedded in the pattern space. ! 74: .PP ! 75: A command line with no addresses selects every pattern space. ! 76: .PP ! 77: A command line with ! 78: one address selects each pattern space that matches the address. ! 79: .PP ! 80: A command line with ! 81: two addresses selects the inclusive range from the first ! 82: pattern space that matches the first address through ! 83: the next pattern space that matches ! 84: the second. ! 85: (If the second address is a number less than or equal ! 86: to the line number first selected, only one ! 87: line is selected.) ! 88: Thereafter the process is repeated, looking again for the ! 89: first address. ! 90: .PP ! 91: Editing commands can be applied only to non-selected pattern ! 92: spaces by use of the negation function `!' (below). ! 93: .PP ! 94: In the following list of functions the ! 95: maximum number of permissible addresses ! 96: for each function is indicated in parentheses. ! 97: .PP ! 98: An argument denoted ! 99: .I text ! 100: consists of one or more lines, ! 101: all but the last of which end with `\e' to hide the ! 102: newline. ! 103: Backslashes in text are treated like backslashes ! 104: in the replacement string of an `s' command, ! 105: and may be used to protect initial blanks and tabs ! 106: against the stripping that is done on ! 107: every script line. ! 108: .PP ! 109: An argument denoted ! 110: .I rfile ! 111: or ! 112: .I wfile ! 113: must terminate the command ! 114: line and must be preceded by exactly one blank. ! 115: Each ! 116: .I wfile ! 117: is created before processing begins. ! 118: There can be at most 10 distinct ! 119: .I wfile ! 120: arguments. ! 121: .TP ! 122: (1)\|a\e ! 123: .br ! 124: .ns ! 125: .TP ! 126: .I text ! 127: .br ! 128: Append. ! 129: Place ! 130: .I text ! 131: on the output before ! 132: reading the next input line. ! 133: .TP ! 134: .RI (2)\|b " label" ! 135: Branch to the `:' command bearing the ! 136: .IR label . ! 137: If ! 138: .I label ! 139: is empty, branch to the end of the script. ! 140: .TP ! 141: (2)\|c\e ! 142: .br ! 143: .ns ! 144: .TP ! 145: .I text ! 146: .br ! 147: Change. ! 148: Delete the pattern space. ! 149: With 0 or 1 address or at the end of a 2-address range, place ! 150: .I text ! 151: on the output. ! 152: Start the next cycle. ! 153: .TP ! 154: (2)\|d ! 155: Delete the pattern space. ! 156: Start the next cycle. ! 157: .TP ! 158: (2)\|D ! 159: Delete the initial segment of the ! 160: pattern space through the first newline. ! 161: Start the next cycle. ! 162: .TP ! 163: (2)\|g ! 164: Replace the contents of the pattern space ! 165: by the contents of the hold space. ! 166: .TP ! 167: (2)\|G ! 168: Append the contents of the hold space to the pattern space. ! 169: .TP ! 170: (2)\|h ! 171: Replace the contents of the hold space by the contents of the pattern space. ! 172: .TP ! 173: (2)\|H ! 174: Append the contents of the pattern space to the hold space. ! 175: .TP ! 176: (1)\|i\e ! 177: .br ! 178: .ns ! 179: .TP ! 180: .I text ! 181: .br ! 182: Insert. ! 183: Place ! 184: .I text ! 185: on the standard output. ! 186: .TP ! 187: (2)\|n ! 188: Copy the pattern space to the standard output. ! 189: Replace the pattern space with the next line of input. ! 190: .TP ! 191: (2)\|N ! 192: Append the next line of input to the pattern space ! 193: with an embedded newline. ! 194: (The current line number changes.) ! 195: .TP ! 196: (2)\|p ! 197: Print. ! 198: Copy the pattern space to the standard output. ! 199: .TP ! 200: (2)\|P ! 201: Copy the initial segment of the pattern space through ! 202: the first newline to the standard output. ! 203: .TP ! 204: (1)\|q ! 205: Quit. ! 206: Branch to the end of the script. ! 207: Do not start a new cycle. ! 208: .TP ! 209: .RI (2)\|r " rfile" ! 210: Read the contents of ! 211: .IR rfile . ! 212: Place them on the output before reading ! 213: the next input line. ! 214: .TP ! 215: .RI (2)\|s /regular\ expression/replacement/flags ! 216: Substitute the ! 217: .I replacement ! 218: string for instances of the ! 219: .I regular expression ! 220: in the pattern space. ! 221: Any character may be used instead of `/'. ! 222: For a fuller description see ! 223: .IR ed (1). ! 224: .I Flags ! 225: is zero or more of ! 226: .RS ! 227: .TP ! 228: g ! 229: Global. ! 230: Substitute for all nonoverlapping instances of the ! 231: .I regular expression ! 232: rather than just the ! 233: first one. ! 234: .TP ! 235: p ! 236: Print the pattern space if a replacement was made. ! 237: .TP ! 238: .RI w " wfile" ! 239: Write. ! 240: Append the pattern space to ! 241: .I wfile ! 242: if a replacement ! 243: was made. ! 244: .RE ! 245: .TP ! 246: .RI (2)\|t " label" ! 247: Test. ! 248: Branch to the `:' command bearing the ! 249: .I label ! 250: if any ! 251: substitutions have been made since the most recent ! 252: reading of an input line or execution of a `t'. ! 253: If ! 254: .I label ! 255: is empty, branch to the end of the script. ! 256: .TP ! 257: .RI (2)\|w " wfile" ! 258: Write. ! 259: Append the pattern space to ! 260: .IR wfile . ! 261: .TP ! 262: .RI (2)\|x ! 263: Exchange the contents of the pattern and hold spaces. ! 264: .TP ! 265: .RI (2)\|y /string1/string2/ ! 266: Transform. ! 267: Replace all occurrences of characters in ! 268: .I string1 ! 269: with the corresponding character in ! 270: .I string2. ! 271: The lengths of ! 272: .I ! 273: string1 ! 274: and ! 275: .I string2 ! 276: must be equal. ! 277: .TP ! 278: .RI (2)! " function" ! 279: Don't. ! 280: Apply the ! 281: .I function ! 282: (or group, if ! 283: .I function ! 284: is `{') only to lines ! 285: .I not ! 286: selected by the address(es). ! 287: .TP ! 288: .RI (0)\|: " label" ! 289: This command does nothing; it bears a ! 290: .I label ! 291: for `b' and `t' commands to branch to. ! 292: .TP ! 293: (1)\|= ! 294: Place the current line number on the standard output as a line. ! 295: .TP ! 296: (2)\|{ ! 297: Execute the following commands through a matching `}' ! 298: only when the pattern space is selected. ! 299: .TP ! 300: (0)\| ! 301: An empty command is ignored. ! 302: .TP ! 303: (0)\|# ! 304: If a \fI#\fP appears as the first character on a line of a script, ! 305: then that entire line is treated as a comment, with one exception. ! 306: If the first line of the script starts with the characters ``\fI#\fPn'', ! 307: then the default output will be suppressed. The rest of the line after ! 308: ``\fI#\fPn'' will also be ignored. A script file must contain at least one ! 309: non-comment line. ! 310: .SH SEE ALSO ! 311: ed(1), grep(1), awk(1), lex(1)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.