|
|
1.1 ! root 1: .TH SED 1 ! 2: .CT 1 files editor ! 3: .SH NAME ! 4: sed \- stream editor ! 5: .SH SYNOPSIS ! 6: .B sed ! 7: [ ! 8: .B -n ! 9: ] ! 10: .I script ! 11: [ ! 12: .I file ... ! 13: ] ! 14: .PP ! 15: .B sed ! 16: [ ! 17: .B -e ! 18: .I script ! 19: ] ! 20: [ ! 21: .B -f ! 22: .I sfile ! 23: ] ! 24: [ ! 25: .I file ... ! 26: ] ! 27: .SH DESCRIPTION ! 28: .I Sed ! 29: copies the named ! 30: .I files ! 31: (standard input default) to the standard output, ! 32: edited according to a command script. ! 33: Script options accumulate. ! 34: .TP ! 35: .BI -e " script ! 36: Script is given literally in command line. ! 37: .TP ! 38: .BI -f " sfile ! 39: Script is given in file ! 40: .I sfile. ! 41: .TP ! 42: .B -n ! 43: Suppress the default output. ! 44: .PP ! 45: A script consists of editing commands, usually one per line. ! 46: If a command ends with ! 47: .LR ; , ! 48: .LR { , ! 49: or ! 50: .LR } , ! 51: the next command begins immediately thereafter. ! 52: Empty commands are ignored. ! 53: Commands have the form ! 54: .IP ! 55: [\fIaddress\fR [\f5,\fI address\fR] ] \fIfunction\fR [\fIargument\fR ...] [\fB;\fR] ! 56: .PP ! 57: In normal operation ! 58: .I sed ! 59: cyclically copies a line of input into a ! 60: .I pattern space ! 61: (unless there is something left after ! 62: a ! 63: .L D ! 64: command), ! 65: applies in sequence ! 66: all commands whose ! 67: .I addresses ! 68: select that pattern space, ! 69: and at the end of the script copies the pattern space ! 70: to the standard output (except under ! 71: .BR -n ) ! 72: and deletes the pattern space. ! 73: .PP ! 74: An ! 75: .I address ! 76: is either a decimal number that counts ! 77: input lines cumulatively across files, a ! 78: .L $ ! 79: that ! 80: addresses the last line of input, or a context address, ! 81: .BI / regular-expression / , ! 82: in the style of ! 83: .IR ed (1), ! 84: with the added convention that ! 85: .L \en ! 86: matches a ! 87: newline embedded in the pattern space. ! 88: .PP ! 89: A command line with no addresses selects every pattern space. ! 90: .PP ! 91: A command line with ! 92: one address selects each pattern space that matches the address. ! 93: (Address ! 94: .L 0 ! 95: is never matched.) ! 96: .PP ! 97: A command line with ! 98: two addresses selects the inclusive range from the first ! 99: pattern space that matches the first address through ! 100: the next pattern space that matches ! 101: the second. ! 102: (If the second address is a number less than or equal ! 103: to the line number first selected, only one ! 104: line is selected.) ! 105: Thereafter the process is repeated, looking again for the ! 106: first address. ! 107: .PP ! 108: Editing commands can be applied to non-selected pattern ! 109: spaces by use of the negation function ! 110: .L ! ! 111: (below). ! 112: .PP ! 113: In the following list of functions the ! 114: maximum number of permissible addresses ! 115: for each function is indicated in parentheses. ! 116: .PP ! 117: A ! 118: .I text ! 119: argument consists of one or more lines, ! 120: all but the last of which end with ! 121: .L \e ! 122: to hide the ! 123: newline. ! 124: Backslashes in text are treated like backslashes ! 125: in the replacement string of an ! 126: .L s ! 127: command, ! 128: and may be used to protect initial blanks and tabs ! 129: against the stripping that is done on ! 130: every script line. ! 131: .PP ! 132: An ! 133: .I rfile ! 134: or ! 135: .I wfile ! 136: argument must terminate the command ! 137: line and must be preceded by exactly one blank. ! 138: Each ! 139: .I wfile ! 140: is created before processing begins. ! 141: There can be at most 120 distinct ! 142: .I wfile ! 143: arguments. ! 144: .TP ! 145: .RB (1) \|a\e ! 146: .br ! 147: .ns ! 148: .TP ! 149: .I text ! 150: Append. ! 151: Place ! 152: .I text ! 153: on the output before ! 154: reading the next input line. ! 155: .HP ! 156: .RB (2) \|b ! 157: .I label ! 158: .br ! 159: Branch to the ! 160: .B : ! 161: command bearing the ! 162: .I label. ! 163: If ! 164: .I label ! 165: is empty, branch to the end of the script. ! 166: .TP ! 167: .RB (2) \|c\e ! 168: .br ! 169: .ns ! 170: .TP ! 171: .I text ! 172: Change. ! 173: Delete the pattern space. ! 174: With 0 or 1 address or at the end of a 2-address range, place ! 175: .I text ! 176: on the output. ! 177: Start the next cycle. ! 178: .TP ! 179: .RB (2) \|d ! 180: Delete the pattern space. ! 181: Start the next cycle. ! 182: .TP ! 183: .RB (2) \|D ! 184: Delete the initial segment of the ! 185: pattern space through the first newline. ! 186: Start the next cycle. ! 187: .TP ! 188: .RB (2) \|g ! 189: Replace the contents of the pattern space ! 190: by the contents of the hold space. ! 191: .TP ! 192: .RB (2) \|G ! 193: Append the contents of the hold space to the pattern space. ! 194: .TP ! 195: .RB (2) \|h ! 196: Replace the contents of the hold space by the contents of the pattern space. ! 197: .TP ! 198: .RB (2) \|H ! 199: Append the contents of the pattern space to the hold space. ! 200: .TP ! 201: .RB (1) \|i\e ! 202: .br ! 203: .ns ! 204: .TP ! 205: .I text ! 206: Insert. ! 207: Place ! 208: .I text ! 209: on the standard output. ! 210: .TP ! 211: .RB (2) \|l ! 212: Literal. ! 213: Place an unambiguous image of the pattern ! 214: space on the standard output, ! 215: using C escape sequences. ! 216: Break long lines, indicating the breakpoint by ! 217: a single backslash. ! 218: Append ! 219: .B \en ! 220: if pattern space ends with space or newline. ! 221: .TP ! 222: .RB (2) \|n ! 223: Copy the pattern space to the standard output. ! 224: Replace the pattern space with the next line of input. ! 225: .TP ! 226: .RB (2) \|N ! 227: Append the next line of input to the pattern space ! 228: with an embedded newline. ! 229: (The current line number changes.) ! 230: .TP ! 231: .RB (2) \|p ! 232: Print. ! 233: Copy the pattern space to the standard output. ! 234: .TP ! 235: .RB (2) \|P ! 236: Copy the initial segment of the pattern space through ! 237: the first newline to the standard output. ! 238: .TP ! 239: .RB (1) \|q ! 240: Quit. ! 241: Branch to the end of the script. ! 242: Do not start a new cycle. ! 243: .HP ! 244: .RB (2) \|r ! 245: .I rfile ! 246: .br ! 247: Read the contents of ! 248: .IR rfile . ! 249: Place them on the output before reading ! 250: the next input line. ! 251: .TP ! 252: .RB (2) \|s/\fIregular-expression\fP/\fIreplacement\fP/\fIflags ! 253: Substitute the ! 254: .I replacement ! 255: string for instances of the ! 256: .I regular-expression ! 257: in the pattern space. ! 258: Any character may be used instead of ! 259: .LR / . ! 260: For a fuller description see ! 261: .IR ed (1); ! 262: although unlike ! 263: .I ed , ! 264: the trailing ! 265: .B / ! 266: .I must ! 267: be supplied. ! 268: .I Flags ! 269: is zero or more of ! 270: .RS ! 271: .TP ! 272: .B g ! 273: Global. ! 274: Substitute for all non-overlapping instances of the ! 275: .I regular expression ! 276: rather than just the ! 277: first one. ! 278: .TP ! 279: .B p ! 280: Print the pattern space if a replacement was made. ! 281: .TP ! 282: .BI w " wfile" ! 283: Write. ! 284: Append the pattern space to ! 285: .I wfile ! 286: if a replacement ! 287: was made. ! 288: .RE ! 289: .HP ! 290: .RB (2) \|t ! 291: .I label ! 292: .br ! 293: Test. ! 294: Branch to the ! 295: .L : ! 296: command bearing the ! 297: .I label ! 298: if any ! 299: substitutions have been made since the most recent ! 300: reading of an input line or execution of a ! 301: .LR t . ! 302: If ! 303: .I label ! 304: is empty, branch to the end of the script. ! 305: .TP ! 306: .RB (2) \|w ! 307: .I wfile ! 308: .br ! 309: Write. ! 310: Append the pattern space to ! 311: .I wfile. ! 312: .TP ! 313: .RB (2) \|x ! 314: Exchange the contents of the pattern and hold spaces. ! 315: .TP ! 316: .RB (2) \|y/\fIstring1\fP/\fIstring2\fP/ ! 317: Transform. ! 318: Replace all occurrences of characters in ! 319: .I string1 ! 320: with the corresponding character in ! 321: .I string2. ! 322: The lengths of ! 323: .I ! 324: string1 ! 325: and ! 326: .I string2 ! 327: must be equal. ! 328: .HP ! 329: .RB (2) ! ! 330: .I function ! 331: .br ! 332: Don't. ! 333: Apply the ! 334: .I function ! 335: (or group, if ! 336: .I function ! 337: is ! 338: .LR { ) ! 339: only to lines ! 340: .I not ! 341: selected by the address(es). ! 342: .HP ! 343: .RB (0) # ! 344: Comment. Ignore the rest of the line. ! 345: .HP ! 346: .RB (0) \|: ! 347: .I label ! 348: .br ! 349: This command does nothing; it bears a ! 350: .I label ! 351: for ! 352: .B b ! 353: and ! 354: .B t ! 355: commands to branch to. ! 356: .TP ! 357: .RB (1) \|= ! 358: Place the current line number on the standard output as a line. ! 359: .TP ! 360: .RB (2) \|{ ! 361: Execute the following commands through a matching ! 362: .L } ! 363: only when the pattern space is selected. ! 364: .TP ! 365: .RB (0) \| ! 366: An empty command is ignored. ! 367: .ne 4 ! 368: .SH EXAMPLES ! 369: .TP ! 370: .B sed 10q file ! 371: Print the first 10 lines of the file. ! 372: .TP ! 373: .B sed '/^$/d' ! 374: Delete empty lines from standard input. ! 375: .TP ! 376: .B sed 's/UNIX/& system/g' ! 377: Replace every instance of ! 378: .L UNIX ! 379: by ! 380: .LR "UNIX system" . ! 381: .PP ! 382: .EX ! 383: sed 's/ *$// \fRdrop trailing blanks\fP ! 384: /^$/d \fRdrop empty lines\fP ! 385: s/ */\e \fRreplace blanks by newlines\fP ! 386: /g ! 387: /^$/d' chapter* ! 388: .EE ! 389: .ns ! 390: .IP ! 391: Print the files ! 392: .BR chapter1 , ! 393: .BR chapter2 , ! 394: etc. one word to a line. ! 395: .PP ! 396: .EX ! 397: nroff -ms manuscript | sed ' ! 398: ${ ! 399: /^$/p \fRif last line of file is empty, print it\fP ! 400: } ! 401: //N \fRif current line is empty, append next line\fP ! 402: /^\en$/D' \fRif two lines are empty, delete the first\fP ! 403: .EE ! 404: .ns ! 405: .IP ! 406: Delete all but one of each group of empty lines from a ! 407: formatted manuscript. ! 408: .PP ! 409: .EX ! 410: ls /usr/* | sed ' ! 411: /^$/d \fRdelete empty lines\fP ! 412: /^[/].*:$/{ \fRlook for lines like \fP/usr/lem: ! 413: s/:$/\e// \fRreplace \fP:\fR by \fP/ ! 414: h \fRhold directory name\fP ! 415: d \fRdon't print; get next line\fP ! 416: } ! 417: G \fRappend held directory name\fP ! 418: s/\e(.*\e)\en\e(.*\e)/\e2\e1/' \fRexchange file and directory\fP ! 419: .EE ! 420: .ns ! 421: .IP ! 422: List all files in user directories, as ! 423: .B ls -d /usr/*/* ! 424: would do if it didn't cause argument list overflow. ! 425: .SH SEE ALSO ! 426: .IR ed (1), ! 427: .IR gre (1), ! 428: .IR awk (1), ! 429: .IR lex (1), ! 430: .IR cut (1), ! 431: .IR split (1), ! 432: .IR sam (9.1) ! 433: .br ! 434: L. E. McMahon, ! 435: `SED \(em A Non-interactive Text Editor', ! 436: this manual, Volume 2. ! 437: .SH BUGS ! 438: If input is from a pipe, buffering may consume ! 439: characters beyond a line on which a ! 440: .L q ! 441: command is executed.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.