| .Dd 2015-10-08 |
| .Dt SED 1 |
| .Os sbase |
| .Sh NAME |
| .Nm sed |
| .Nd stream editor |
| .Sh SYNOPSIS |
| .Nm |
| .Op Fl nrE |
| .Ar script |
| .Op Ar file ... |
| .Nm |
| .Op Fl nrE |
| .Fl e Ar script |
| .Op Fl e Ar script |
| .Ar ... |
| .Op Fl f Ar scriptfile |
| .Ar ... |
| .Op Ar file ... |
| .Nm |
| .Op Fl nrE |
| .Op Fl e Ar script |
| .Ar ... |
| .Fl f Ar scriptfile |
| .Op Fl f Ar scriptfile |
| .Ar ... |
| .Op Ar file ... |
| .Sh DESCRIPTION |
| .Nm |
| reads line oriented output from |
| .Ar file |
| or stdin, applies the editing commands supplied by |
| .Ar script |
| or |
| .Ar scriptfile |
| and writes the edited stream to stdout. |
| .Sh OPTIONS |
| .Bl -tag -width Ds |
| .It Fl n |
| Suppress default printing at the end of each cycle. |
| .It Fl r E |
| Use extended regular expressions |
| .It Fl e Ar script |
| Append |
| .Ar script |
| to the list of editing commands. |
| .It Fl f Ar scriptfile |
| Append the commands from |
| .Ar scriptfile |
| to the list of editing commands. |
| .El |
| .Sh EXTENDED DESCRIPTION |
| Editing commands take the form |
| .Pp |
| [address[,address]]function |
| .Ss Addresses |
| Addresses are either blank, a positive decimal integer denoting a line |
| number, the character '$' denoting the last line of input, or a regular |
| expression. A command with no addresses matches every line, one address |
| matches individual lines, and two addresses matches a range of lines |
| from the first to the second address inclusive. |
| .Ss Functions |
| .Bl -tag -width Ds |
| .It Ar a Op Ar text |
| Append text to output after end of current cycle. |
| .It Ar b Op Ar label |
| Branch to label. If no label is provided branch to end of script. |
| .It Ar c Op Ar text |
| Change. Delete addressed range and output text after end of current cycle. |
| .It Ar d |
| Delete pattern space and begin next cycle. |
| .It Ar D |
| Delete pattern space up to and including first newline and begin new |
| cycle without reading input. If there is no newline, behave like d. |
| .It Ar g |
| Get. Replace the pattern space with the hold space. |
| .It Ar G |
| Get. Append a newline and the hold space to the pattern space. |
| .It Ar h |
| Hold. Replace the hold space with the pattern space. |
| .It Ar H |
| Hold. Append a newline and the pattern space to the hold space. |
| .It Ar i Op Ar text |
| Insert text in output. |
| .It Ar l |
| List? Write the pattern space replacing known non printing characters with |
| backslash escaped versions (\\\\, \\a, \\b, \\f, \\r, \\t, \\v). Print |
| bad UTF-8 sequences as \\ooo where ooo is a three digit octal number. Mark |
| end of lines with '$'. |
| .It Ar n |
| Next. Write pattern space (unless |
| .Fl n ) , |
| read next line into pattern space, and continue current cycle. If there |
| is no next line, quit. |
| .It Ar N |
| Next. Read next line, append newline and next line to pattern space, |
| and continue cycle. If there is no next line, quit without printing |
| current pattern space. |
| .It Ar p |
| Print current pattern space. |
| .It Ar P |
| Print current pattern space up to first newline. |
| .It Ar q |
| Quit. |
| .It Ar r file |
| Read file and write contents to output. |
| .It Ar s/re/text/flags |
| Find occurences of regular expression re in the pattern space and replace |
| with text. A '&' in text is replaced with the entire match. A \\d where |
| d is a decimal digit 1-9 is replaced with the corresponding match group |
| from the regular expression. \\n represents a newline in both the regular |
| expression and replacement text. A literal newline in the replacement |
| text must be preceded by a \\. |
| .Pp |
| Flags are |
| .Bl -tag -width Ds |
| .It Ar n |
| A positive decimal number denoting which match in the pattern space |
| to replace. |
| .It Ar g |
| Global. Replace all matches in the pattern space. |
| .It Ar p |
| Print the pattern if a replacement was made. |
| .It Ar w file |
| Write the pattern space to file if a replacement was made. |
| .El |
| .It Ar t Op Ar label |
| Test. Branch to corresponding labelif a substitution has been made since |
| the last line was read or last t command was executed. If no label is |
| provided branch to end of script. |
| .It Ar w file |
| Write pattern space to file. |
| .It Ar x |
| Exchange hold space and pattern space. |
| .It Ar y/set1/set2/ |
| Replace each occurrence of a character from set 1 with the corresponding |
| character from set 2. |
| .It Ar :label |
| Create a label for b and t commands. |
| .It Ar = |
| Write current input line number to output. |
| .El |