diff options
Diffstat (limited to 'src/sed/doc/sed.info-2')
-rw-r--r-- | src/sed/doc/sed.info-2 | 1087 |
1 files changed, 1087 insertions, 0 deletions
diff --git a/src/sed/doc/sed.info-2 b/src/sed/doc/sed.info-2 new file mode 100644 index 0000000..ee74b14 --- /dev/null +++ b/src/sed/doc/sed.info-2 @@ -0,0 +1,1087 @@ +This is ../../doc/sed.info, produced by makeinfo version 4.5 from +../../doc/sed.texi. + +INFO-DIR-SECTION Text creation and manipulation +START-INFO-DIR-ENTRY +* sed: (sed). Stream EDitor. + +END-INFO-DIR-ENTRY + +This file documents version 4.1.5 of GNU `sed', a stream editor. + + Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004 Free Software +Foundation, Inc. + + This document is released under the terms of the GNU Free +Documentation License as published by the Free Software Foundation; +either version 1.1, or (at your option) any later version. + + You should have received a copy of the GNU Free Documentation +License along with GNU `sed'; see the file `COPYING.DOC'. If not, +write to the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02110-1301, USA. + + There are no Cover Texts and no Invariant Sections; this text, along +with its equivalent in the printed manual, constitutes the Title Page. + +File: sed.info, Node: Print bash environment, Next: Reverse chars of lines, Prev: Rename files to lower case, Up: Examples + +Print `bash' Environment +======================== + + This script strips the definition of the shell functions from the +output of the `set' Bourne-shell command. + + #!/bin/sh + + set | sed -n ' + :x + + # if no occurrence of "=()" print and load next line + /=()/! { p; b; } + / () $/! { p; b; } + + # possible start of functions section + # save the line in case this is a var like FOO="() " + h + + # if the next line has a brace, we quit because + # nothing comes after functions + n + /^{/ q + + # print the old line + x; p + + # work on the new line now + x; bx + ' + + +File: sed.info, Node: Reverse chars of lines, Next: tac, Prev: Print bash environment, Up: Examples + +Reverse Characters of Lines +=========================== + + This script can be used to reverse the position of characters in +lines. The technique moves two characters at a time, hence it is +faster than more intuitive implementations. + + Note the `tx' command before the definition of the label. This is +often needed to reset the flag that is tested by the `t' command. + + Imaginative readers will find uses for this script. An example is +reversing the output of `banner'.(1) + + #!/usr/bin/sed -f + + /../! b + + # Reverse a line. Begin embedding the line between two newlines + s/^.*$/\ + &\ + / + + # Move first character at the end. The regexp matches until + # there are zero or one characters between the markers + tx + :x + s/\(\n.\)\(.*\)\(.\n\)/\3\2\1/ + tx + + # Remove the newline markers + s/\n//g + + ---------- Footnotes ---------- + + (1) This requires another script to pad the output of banner; for +example + + #! /bin/sh + + banner -w $1 $2 $3 $4 | + sed -e :a -e '/^.\{0,'$1'\}$/ { s/$/ /; ba; }' | + ~/sedscripts/reverseline.sed + + +File: sed.info, Node: tac, Next: cat -n, Prev: Reverse chars of lines, Up: Examples + +Reverse Lines of Files +====================== + + This one begins a series of totally useless (yet interesting) +scripts emulating various Unix commands. This, in particular, is a +`tac' workalike. + + Note that on implementations other than GNU `sed' this script might +easily overflow internal buffers. + + #!/usr/bin/sed -nf + + # reverse all lines of input, i.e. first line became last, ... + + # from the second line, the buffer (which contains all previous lines) + # is *appended* to current line, so, the order will be reversed + 1! G + + # on the last line we're done -- print everything + $ p + + # store everything on the buffer again + h + + +File: sed.info, Node: cat -n, Next: cat -b, Prev: tac, Up: Examples + +Numbering Lines +=============== + + This script replaces `cat -n'; in fact it formats its output exactly +like GNU `cat' does. + + Of course this is completely useless and for two reasons: first, +because somebody else did it in C, second, because the following +Bourne-shell script could be used for the same purpose and would be +much faster: + + #! /bin/sh + sed -e "=" $@ | sed -e ' + s/^/ / + N + s/^ *\(......\)\n/\1 / + ' + + It uses `sed' to print the line number, then groups lines two by two +using `N'. Of course, this script does not teach as much as the one +presented below. + + The algorithm used for incrementing uses both buffers, so the line +is printed as soon as possible and then discarded. The number is split +so that changing digits go in a buffer and unchanged ones go in the +other; the changed digits are modified in a single step (using a `y' +command). The line number for the next line is then composed and +stored in the hold space, to be used in the next iteration. + + #!/usr/bin/sed -nf + + # Prime the pump on the first line + x + /^$/ s/^.*$/1/ + + # Add the correct line number before the pattern + G + h + + # Format it and print it + s/^/ / + s/^ *\(......\)\n/\1 /p + + # Get the line number from hold space; add a zero + # if we're going to add a digit on the next line + g + s/\n.*$// + /^9*$/ s/^/0/ + + # separate changing/unchanged digits with an x + s/.9*$/x&/ + + # keep changing digits in hold space + h + s/^.*x// + y/0123456789/1234567890/ + x + + # keep unchanged digits in pattern space + s/x.*$// + + # compose the new number, remove the newline implicitly added by G + G + s/\n// + h + + +File: sed.info, Node: cat -b, Next: wc -c, Prev: cat -n, Up: Examples + +Numbering Non-blank Lines +========================= + + Emulating `cat -b' is almost the same as `cat -n'--we only have to +select which lines are to be numbered and which are not. + + The part that is common to this script and the previous one is not +commented to show how important it is to comment `sed' scripts +properly... + + #!/usr/bin/sed -nf + + /^$/ { + p + b + } + + # Same as cat -n from now + x + /^$/ s/^.*$/1/ + G + h + s/^/ / + s/^ *\(......\)\n/\1 /p + x + s/\n.*$// + /^9*$/ s/^/0/ + s/.9*$/x&/ + h + s/^.*x// + y/0123456789/1234567890/ + x + s/x.*$// + G + s/\n// + h + + +File: sed.info, Node: wc -c, Next: wc -w, Prev: cat -b, Up: Examples + +Counting Characters +=================== + + This script shows another way to do arithmetic with `sed'. In this +case we have to add possibly large numbers, so implementing this by +successive increments would not be feasible (and possibly even more +complicated to contrive than this script). + + The approach is to map numbers to letters, kind of an abacus +implemented with `sed'. `a's are units, `b's are tens and so on: we +simply add the number of characters on the current line as units, and +then propagate the carry to tens, hundreds, and so on. + + As usual, running totals are kept in hold space. + + On the last line, we convert the abacus form back to decimal. For +the sake of variety, this is done with a loop rather than with some 80 +`s' commands(1): first we convert units, removing `a's from the number; +then we rotate letters so that tens become `a's, and so on until no +more letters remain. + + #!/usr/bin/sed -nf + + # Add n+1 a's to hold space (+1 is for the newline) + s/./a/g + H + x + s/\n/a/ + + # Do the carry. The t's and b's are not necessary, + # but they do speed up the thing + t a + : a; s/aaaaaaaaaa/b/g; t b; b done + : b; s/bbbbbbbbbb/c/g; t c; b done + : c; s/cccccccccc/d/g; t d; b done + : d; s/dddddddddd/e/g; t e; b done + : e; s/eeeeeeeeee/f/g; t f; b done + : f; s/ffffffffff/g/g; t g; b done + : g; s/gggggggggg/h/g; t h; b done + : h; s/hhhhhhhhhh//g + + : done + $! { + h + b + } + + # On the last line, convert back to decimal + + : loop + /a/! s/[b-h]*/&0/ + s/aaaaaaaaa/9/ + s/aaaaaaaa/8/ + s/aaaaaaa/7/ + s/aaaaaa/6/ + s/aaaaa/5/ + s/aaaa/4/ + s/aaa/3/ + s/aa/2/ + s/a/1/ + + : next + y/bcdefgh/abcdefg/ + /[a-h]/ b loop + p + + ---------- Footnotes ---------- + + (1) Some implementations have a limit of 199 commands per script + + +File: sed.info, Node: wc -w, Next: wc -l, Prev: wc -c, Up: Examples + +Counting Words +============== + + This script is almost the same as the previous one, once each of the +words on the line is converted to a single `a' (in the previous script +each letter was changed to an `a'). + + It is interesting that real `wc' programs have optimized loops for +`wc -c', so they are much slower at counting words rather than +characters. This script's bottleneck, instead, is arithmetic, and +hence the word-counting one is faster (it has to manage smaller +numbers). + + Again, the common parts are not commented to show the importance of +commenting `sed' scripts. + + #!/usr/bin/sed -nf + + # Convert words to a's + s/[ tab][ tab]*/ /g + s/^/ / + s/ [^ ][^ ]*/a /g + s/ //g + + # Append them to hold space + H + x + s/\n// + + # From here on it is the same as in wc -c. + /aaaaaaaaaa/! bx; s/aaaaaaaaaa/b/g + /bbbbbbbbbb/! bx; s/bbbbbbbbbb/c/g + /cccccccccc/! bx; s/cccccccccc/d/g + /dddddddddd/! bx; s/dddddddddd/e/g + /eeeeeeeeee/! bx; s/eeeeeeeeee/f/g + /ffffffffff/! bx; s/ffffffffff/g/g + /gggggggggg/! bx; s/gggggggggg/h/g + s/hhhhhhhhhh//g + :x + $! { h; b; } + :y + /a/! s/[b-h]*/&0/ + s/aaaaaaaaa/9/ + s/aaaaaaaa/8/ + s/aaaaaaa/7/ + s/aaaaaa/6/ + s/aaaaa/5/ + s/aaaa/4/ + s/aaa/3/ + s/aa/2/ + s/a/1/ + y/bcdefgh/abcdefg/ + /[a-h]/ by + p + + +File: sed.info, Node: wc -l, Next: head, Prev: wc -w, Up: Examples + +Counting Lines +============== + + No strange things are done now, because `sed' gives us `wc -l' +functionality for free!!! Look: + + #!/usr/bin/sed -nf + $= + + +File: sed.info, Node: head, Next: tail, Prev: wc -l, Up: Examples + +Printing the First Lines +======================== + + This script is probably the simplest useful `sed' script. It +displays the first 10 lines of input; the number of displayed lines is +right before the `q' command. + + #!/usr/bin/sed -f + 10q + + +File: sed.info, Node: tail, Next: uniq, Prev: head, Up: Examples + +Printing the Last Lines +======================= + + Printing the last N lines rather than the first is more complex but +indeed possible. N is encoded in the second line, before the bang +character. + + This script is similar to the `tac' script in that it keeps the +final output in the hold space and prints it at the end: + + #!/usr/bin/sed -nf + + 1! {; H; g; } + 1,10 !s/[^\n]*\n// + $p + h + + Mainly, the scripts keeps a window of 10 lines and slides it by +adding a line and deleting the oldest (the substitution command on the +second line works like a `D' command but does not restart the loop). + + The "sliding window" technique is a very powerful way to write +efficient and complex `sed' scripts, because commands like `P' would +require a lot of work if implemented manually. + + To introduce the technique, which is fully demonstrated in the rest +of this chapter and is based on the `N', `P' and `D' commands, here is +an implementation of `tail' using a simple "sliding window." + + This looks complicated but in fact the working is the same as the +last script: after we have kicked in the appropriate number of lines, +however, we stop using the hold space to keep inter-line state, and +instead use `N' and `D' to slide pattern space by one line: + + #!/usr/bin/sed -f + + 1h + 2,10 {; H; g; } + $q + 1,9d + N + D + + Note how the first, second and fourth line are inactive after the +first ten lines of input. After that, all the script does is: exiting +on the last line of input, appending the next input line to pattern +space, and removing the first line. + + +File: sed.info, Node: uniq, Next: uniq -d, Prev: tail, Up: Examples + +Make Duplicate Lines Unique +=========================== + + This is an example of the art of using the `N', `P' and `D' +commands, probably the most difficult to master. + + #!/usr/bin/sed -f + h + + :b + # On the last line, print and exit + $b + N + /^\(.*\)\n\1$/ { + # The two lines are identical. Undo the effect of + # the n command. + g + bb + } + + # If the `N' command had added the last line, print and exit + $b + + # The lines are different; print the first and go + # back working on the second. + P + D + + As you can see, we mantain a 2-line window using `P' and `D'. This +technique is often used in advanced `sed' scripts. + + +File: sed.info, Node: uniq -d, Next: uniq -u, Prev: uniq, Up: Examples + +Print Duplicated Lines of Input +=============================== + + This script prints only duplicated lines, like `uniq -d'. + + #!/usr/bin/sed -nf + + $b + N + /^\(.*\)\n\1$/ { + # Print the first of the duplicated lines + s/.*\n// + p + + # Loop until we get a different line + :b + $b + N + /^\(.*\)\n\1$/ { + s/.*\n// + bb + } + } + + # The last line cannot be followed by duplicates + $b + + # Found a different one. Leave it alone in the pattern space + # and go back to the top, hunting its duplicates + D + + +File: sed.info, Node: uniq -u, Next: cat -s, Prev: uniq -d, Up: Examples + +Remove All Duplicated Lines +=========================== + + This script prints only unique lines, like `uniq -u'. + + #!/usr/bin/sed -f + + # Search for a duplicate line --- until that, print what you find. + $b + N + /^\(.*\)\n\1$/ ! { + P + D + } + + :c + # Got two equal lines in pattern space. At the + # end of the file we simply exit + $d + + # Else, we keep reading lines with `N' until we + # find a different one + s/.*\n// + N + /^\(.*\)\n\1$/ { + bc + } + + # Remove the last instance of the duplicate line + # and go back to the top + D + + +File: sed.info, Node: cat -s, Prev: uniq -u, Up: Examples + +Squeezing Blank Lines +===================== + + As a final example, here are three scripts, of increasing complexity +and speed, that implement the same function as `cat -s', that is +squeezing blank lines. + + The first leaves a blank line at the beginning and end if there are +some already. + + #!/usr/bin/sed -f + + # on empty lines, join with next + # Note there is a star in the regexp + :x + /^\n*$/ { + N + bx + } + + # now, squeeze all '\n', this can be also done by: + # s/^\(\n\)*/\1/ + s/\n*/\ + / + + This one is a bit more complex and removes all empty lines at the +beginning. It does leave a single blank line at end if one was there. + + #!/usr/bin/sed -f + + # delete all leading empty lines + 1,/^./{ + /./!d + } + + # on an empty line we remove it and all the following + # empty lines, but one + :x + /./!{ + N + s/^\n$// + tx + } + + This removes leading and trailing blank lines. It is also the +fastest. Note that loops are completely done with `n' and `b', without +relying on `sed' to restart the the script automatically at the end of +a line. + + #!/usr/bin/sed -nf + + # delete all (leading) blanks + /./!d + + # get here: so there is a non empty + :x + # print it + p + # get next + n + # got chars? print it again, etc... + /./bx + + # no, don't have chars: got an empty line + :z + # get next, if last line we finish here so no trailing + # empty lines are written + n + # also empty? then ignore it, and get next... this will + # remove ALL empty lines + /./!bz + + # all empty lines were deleted/ignored, but we have a non empty. As + # what we want to do is to squeeze, insert a blank line artificially + i\ + + bx + + +File: sed.info, Node: Limitations, Next: Other Resources, Prev: Examples, Up: Top + +GNU `sed''s Limitations and Non-limitations +******************************************* + + For those who want to write portable `sed' scripts, be aware that +some implementations have been known to limit line lengths (for the +pattern and hold spaces) to be no more than 4000 bytes. The POSIX +standard specifies that conforming `sed' implementations shall support +at least 8192 byte line lengths. GNU `sed' has no built-in limit on +line length; as long as it can `malloc()' more (virtual) memory, you +can feed or construct lines as long as you like. + + However, recursion is used to handle subpatterns and indefinite +repetition. This means that the available stack space may limit the +size of the buffer that can be processed by certain patterns. + + +File: sed.info, Node: Other Resources, Next: Reporting Bugs, Prev: Limitations, Up: Top + +Other Resources for Learning About `sed' +**************************************** + + In addition to several books that have been written about `sed' +(either specifically or as chapters in books which discuss shell +programming), one can find out more about `sed' (including suggestions +of a few books) from the FAQ for the `sed-users' mailing list, +available from any of: + `http://www.student.northpark.edu/pemente/sed/sedfaq.html' + `http://sed.sf.net/grabbag/tutorials/sedfaq.html' + + Also of interest are +`http://www.student.northpark.edu/pemente/sed/index.htm' and +`http://sed.sf.net/grabbag', which include `sed' tutorials and other +`sed'-related goodies. + + The `sed-users' mailing list itself maintained by Sven Guckes. To +subscribe, visit `http://groups.yahoo.com' and search for the +`sed-users' mailing list. + + +File: sed.info, Node: Reporting Bugs, Next: Extended regexps, Prev: Other Resources, Up: Top + +Reporting Bugs +************** + + Email bug reports to <bonzini@gnu.org>. Be sure to include the word +"sed" somewhere in the `Subject:' field. Also, please include the +output of `sed --version' in the body of your report if at all possible. + + Please do not send a bug report like this: + + while building frobme-1.3.4 + $ configure + error--> sed: file sedscr line 1: Unknown option to 's' + + If GNU `sed' doesn't configure your favorite package, take a few +extra minutes to identify the specific problem and make a stand-alone +test case. Unlike other programs such as C compilers, making such test +cases for `sed' is quite simple. + + A stand-alone test case includes all the data necessary to perform +the test, and the specific invocation of `sed' that causes the problem. +The smaller a stand-alone test case is, the better. A test case should +not involve something as far removed from `sed' as "try to configure +frobme-1.3.4". Yes, that is in principle enough information to look +for the bug, but that is not a very practical prospect. + + Here are a few commonly reported bugs that are not bugs. + +`N' command on the last line + Most versions of `sed' exit without printing anything when the `N' + command is issued on the last line of a file. GNU `sed' prints + pattern space before exiting unless of course the `-n' command + switch has been specified. This choice is by design. + + For example, the behavior of + sed N foo bar + + would depend on whether foo has an even or an odd number of + lines(1). Or, when writing a script to read the next few lines + following a pattern match, traditional implementations of `sed' + would force you to write something like + /foo/{ $!N; $!N; $!N; $!N; $!N; $!N; $!N; $!N; $!N } + + instead of just + /foo/{ N;N;N;N;N;N;N;N;N; } + + In any case, the simplest workaround is to use `$d;N' in scripts + that rely on the traditional behavior, or to set the + `POSIXLY_CORRECT' variable to a non-empty value. + +Regex syntax clashes (problems with backslashes) + `sed' uses the POSIX basic regular expression syntax. According to + the standard, the meaning of some escape sequences is undefined in + this syntax; notable in the case of `sed' are `\|', `\+', `\?', + `\`', `\'', `\<', `\>', `\b', `\B', `\w', and `\W'. + + As in all GNU programs that use POSIX basic regular expressions, + `sed' interprets these escape sequences as special characters. + So, `x\+' matches one or more occurrences of `x'. `abc\|def' + matches either `abc' or `def'. + + This syntax may cause problems when running scripts written for + other `sed's. Some `sed' programs have been written with the + assumption that `\|' and `\+' match the literal characters `|' and + `+'. Such scripts must be modified by removing the spurious + backslashes if they are to be used with modern implementations of + `sed', like GNU `sed'. + + On the other hand, some scripts use s|abc\|def||g to remove + occurrences of _either_ `abc' or `def'. While this worked until + `sed' 4.0.x, newer versions interpret this as removing the string + `abc|def'. This is again undefined behavior according to POSIX, + and this interpretation is arguably more robust: older `sed's, for + example, required that the regex matcher parsed `\/' as `/' in the + common case of escaping a slash, which is again undefined + behavior; the new behavior avoids this, and this is good because + the regex matcher is only partially under our control. + + In addition, this version of `sed' supports several escape + characters (some of which are multi-character) to insert + non-printable characters in scripts (`\a', `\c', `\d', `\o', `\r', + `\t', `\v', `\x'). These can cause similar problems with scripts + written for other `sed's. + +`-i' clobbers read-only files + In short, `sed -i' will let you delete the contents of a read-only + file, and in general the `-i' option (*note Invocation: Invoking + sed.) lets you clobber protected files. This is not a bug, but + rather a consequence of how the Unix filesystem works. + + The permissions on a file say what can happen to the data in that + file, while the permissions on a directory say what can happen to + the list of files in that directory. `sed -i' will not ever open + for writing a file that is already on disk. Rather, it will work + on a temporary file that is finally renamed to the original name: + if you rename or delete files, you're actually modifying the + contents of the directory, so the operation depends on the + permissions of the directory, not of the file. For this same + reason, `sed' does not let you use `-i' on a writeable file in a + read-only directory (but unbelievably nobody reports that as a + bug...). + +`0a' does not work (gives an error) + There is no line 0. 0 is a special address that is only used to + treat addresses like `0,/RE/' as active when the script starts: if + you write `1,/abc/d' and the first line includes the word `abc', + then that match would be ignored because address ranges must span + at least two lines (barring the end of the file); but what you + probably wanted is to delete every line up to the first one + including `abc', and this is obtained with `0,/abc/d'. + +`[a-z]' is case insensitive + You are encountering problems with locales. POSIX mandates that + `[a-z]' uses the current locale's collation order - in C parlance, + that means using `strcoll(3)' instead of `strcmp(3)'. Some + locales have a case-insensitive collation order, others don't: one + of those that have problems is Estonian. + + Another problem is that `[a-z]' tries to use collation symbols. + This only happens if you are on the GNU system, using GNU libc's + regular expression matcher instead of compiling the one supplied + with GNU sed. In a Danish locale, for example, the regular + expression `^[a-z]$' matches the string `aa', because this is a + single collating symbol that comes after `a' and before `b'; `ll' + behaves similarly in Spanish locales, or `ij' in Dutch locales. + + To work around these problems, which may cause bugs in shell + scripts, set the `LC_COLLATE' and `LC_CTYPE' environment variables + to `C'. + + ---------- Footnotes ---------- + + (1) which is the actual "bug" that prompted the change in behavior + + +File: sed.info, Node: Extended regexps, Next: Concept Index, Prev: Reporting Bugs, Up: Top + +Extended regular expressions +**************************** + + The only difference between basic and extended regular expressions +is in the behavior of a few characters: `?', `+', parentheses, and +braces (`{}'). While basic regular expressions require these to be +escaped if you want them to behave as special characters, when using +extended regular expressions you must escape them if you want them _to +match a literal character_. + +Examples: +`abc?' + becomes `abc\?' when using extended regular expressions. It + matches the literal string `abc?'. + +`c\+' + becomes `c+' when using extended regular expressions. It matches + one or more `c's. + +`a\{3,\}' + becomes `a{3,}' when using extended regular expressions. It + matches three or more `a's. + +`\(abc\)\{2,3\}' + becomes `(abc){2,3}' when using extended regular expressions. It + matches either `abcabc' or `abcabcabc'. + +`\(abc*\)\1' + becomes `(abc*)\1' when using extended regular expressions. + Backreferences must still be escaped when using extended regular + expressions. + + +File: sed.info, Node: Concept Index, Next: Command and Option Index, Prev: Extended regexps, Up: Top + +Concept Index +************* + + This is a general index of all issues discussed in this manual, with +the exception of the `sed' commands and command-line options. + +* Menu: + +* Additional reading about sed: Other Resources. +* ADDR1,+N: Addresses. +* ADDR1,~N: Addresses. +* Address, as a regular expression: Addresses. +* Address, last line: Addresses. +* Address, numeric: Addresses. +* Addresses, in sed scripts: Addresses. +* Append hold space to pattern space: Other Commands. +* Append next input line to pattern space: Other Commands. +* Append pattern space to hold space: Other Commands. +* Appending text after a line: Other Commands. +* Backreferences, in regular expressions: The "s" Command. +* Branch to a label, if s/// failed: Extended Commands. +* Branch to a label, if s/// succeeded: Programming Commands. +* Branch to a label, unconditionally: Programming Commands. +* Buffer spaces, pattern and hold: Execution Cycle. +* Bugs, reporting: Reporting Bugs. +* Case-insensitive matching: The "s" Command. +* Caveat -- #n on first line: Common Commands. +* Command groups: Common Commands. +* Comments, in scripts: Common Commands. +* Conditional branch <1>: Extended Commands. +* Conditional branch: Programming Commands. +* Copy hold space into pattern space: Other Commands. +* Copy pattern space into hold space: Other Commands. +* Delete first line from pattern space: Other Commands. +* Disabling autoprint, from command line: Invoking sed. +* empty regular expression: Addresses. +* Evaluate Bourne-shell commands: Extended Commands. +* Evaluate Bourne-shell commands, after substitution: The "s" Command. +* Exchange hold space with pattern space: Other Commands. +* Excluding lines: Addresses. +* Extended regular expressions, choosing: Invoking sed. +* Extended regular expressions, syntax: Extended regexps. +* Files to be processed as input: Invoking sed. +* Flow of control in scripts: Programming Commands. +* Global substitution: The "s" Command. +* GNU extensions, /dev/stderr file <1>: The "s" Command. +* GNU extensions, /dev/stderr file: Other Commands. +* GNU extensions, /dev/stdin file <1>: Other Commands. +* GNU extensions, /dev/stdin file: Extended Commands. +* GNU extensions, /dev/stdout file <1>: Invoking sed. +* GNU extensions, /dev/stdout file <2>: The "s" Command. +* GNU extensions, /dev/stdout file: Other Commands. +* GNU extensions, 0 address: Addresses. +* GNU extensions, 0,ADDR2 addressing: Addresses. +* GNU extensions, ADDR1,+N addressing: Addresses. +* GNU extensions, ADDR1,~N addressing: Addresses. +* GNU extensions, branch if s/// failed: Extended Commands. +* GNU extensions, case modifiers in s commands: The "s" Command. +* GNU extensions, checking for their presence: Extended Commands. +* GNU extensions, disabling: Invoking sed. +* GNU extensions, evaluating Bourne-shell commands <1>: Extended Commands. +* GNU extensions, evaluating Bourne-shell commands: The "s" Command. +* GNU extensions, extended regular expressions: Invoking sed. +* GNU extensions, g and NUMBER modifier interaction in s command: The "s" Command. +* GNU extensions, I modifier <1>: Addresses. +* GNU extensions, I modifier: The "s" Command. +* GNU extensions, in-place editing <1>: Reporting Bugs. +* GNU extensions, in-place editing: Invoking sed. +* GNU extensions, L command: Extended Commands. +* GNU extensions, M modifier: The "s" Command. +* GNU extensions, modifiers and the empty regular expression: Addresses. +* GNU extensions, N~M addresses: Addresses. +* GNU extensions, quitting silently: Extended Commands. +* GNU extensions, R command: Extended Commands. +* GNU extensions, reading a file a line at a time: Extended Commands. +* GNU extensions, reformatting paragraphs: Extended Commands. +* GNU extensions, returning an exit code <1>: Common Commands. +* GNU extensions, returning an exit code: Extended Commands. +* GNU extensions, setting line length: Other Commands. +* GNU extensions, special escapes <1>: Reporting Bugs. +* GNU extensions, special escapes: Escapes. +* GNU extensions, special two-address forms: Addresses. +* GNU extensions, subprocesses <1>: The "s" Command. +* GNU extensions, subprocesses: Extended Commands. +* GNU extensions, to basic regular expressions <1>: Reporting Bugs. +* GNU extensions, to basic regular expressions: Regular Expressions. +* GNU extensions, two addresses supported by most commands: Other Commands. +* GNU extensions, unlimited line length: Limitations. +* GNU extensions, writing first line to a file: Extended Commands. +* Goto, in scripts: Programming Commands. +* Greedy regular expression matching: Regular Expressions. +* Grouping commands: Common Commands. +* Hold space, appending from pattern space: Other Commands. +* Hold space, appending to pattern space: Other Commands. +* Hold space, copy into pattern space: Other Commands. +* Hold space, copying pattern space into: Other Commands. +* Hold space, definition: Execution Cycle. +* Hold space, exchange with pattern space: Other Commands. +* In-place editing: Reporting Bugs. +* In-place editing, activating: Invoking sed. +* In-place editing, Perl-style backup file names: Invoking sed. +* Inserting text before a line: Other Commands. +* Labels, in scripts: Programming Commands. +* Last line, selecting: Addresses. +* Line length, setting <1>: Invoking sed. +* Line length, setting: Other Commands. +* Line number, printing: Other Commands. +* Line selection: Addresses. +* Line, selecting by number: Addresses. +* Line, selecting by regular expression match: Addresses. +* Line, selecting last: Addresses. +* List pattern space: Other Commands. +* Mixing g and NUMBER modifiers in the s command: The "s" Command. +* Next input line, append to pattern space: Other Commands. +* Next input line, replace pattern space with: Common Commands. +* Non-bugs, in-place editing: Reporting Bugs. +* Non-bugs, N command on the last line: Reporting Bugs. +* Non-bugs, regex syntax clashes: Reporting Bugs. +* Parenthesized substrings: The "s" Command. +* Pattern space, definition: Execution Cycle. +* Perl-style regular expressions, multiline: Addresses. +* Portability, comments: Common Commands. +* Portability, line length limitations: Limitations. +* Portability, N command on the last line: Reporting Bugs. +* POSIXLY_CORRECT behavior, bracket expressions: Regular Expressions. +* POSIXLY_CORRECT behavior, enabling: Invoking sed. +* POSIXLY_CORRECT behavior, escapes: Escapes. +* POSIXLY_CORRECT behavior, N command: Reporting Bugs. +* Print first line from pattern space: Other Commands. +* Printing line number: Other Commands. +* Printing text unambiguously: Other Commands. +* Quitting <1>: Extended Commands. +* Quitting: Common Commands. +* Range of lines: Addresses. +* Range with start address of zero: Addresses. +* Read next input line: Common Commands. +* Read text from a file <1>: Extended Commands. +* Read text from a file: Other Commands. +* Reformat pattern space: Extended Commands. +* Reformatting paragraphs: Extended Commands. +* Replace hold space with copy of pattern space: Other Commands. +* Replace pattern space with copy of hold space: Other Commands. +* Replacing all text matching regexp in a line: The "s" Command. +* Replacing only Nth match of regexp in a line: The "s" Command. +* Replacing selected lines with other text: Other Commands. +* Requiring GNU sed: Extended Commands. +* Script structure: sed Programs. +* Script, from a file: Invoking sed. +* Script, from command line: Invoking sed. +* sed program structure: sed Programs. +* Selecting lines to process: Addresses. +* Selecting non-matching lines: Addresses. +* Several lines, selecting: Addresses. +* Slash character, in regular expressions: Addresses. +* Spaces, pattern and hold: Execution Cycle. +* Special addressing forms: Addresses. +* Standard input, processing as input: Invoking sed. +* Stream editor: Introduction. +* Subprocesses <1>: Extended Commands. +* Subprocesses: The "s" Command. +* Substitution of text, options: The "s" Command. +* Text, appending: Other Commands. +* Text, deleting: Common Commands. +* Text, insertion: Other Commands. +* Text, printing: Common Commands. +* Text, printing after substitution: The "s" Command. +* Text, writing to a file after substitution: The "s" Command. +* Transliteration: Other Commands. +* Unbuffered I/O, choosing: Invoking sed. +* Usage summary, printing: Invoking sed. +* Version, printing: Invoking sed. +* Working on separate files: Invoking sed. +* Write first line to a file: Extended Commands. +* Write to a file: Other Commands. +* Zero, as range start address: Addresses. + + +File: sed.info, Node: Command and Option Index, Prev: Concept Index, Up: Top + +Command and Option Index +************************ + + This is an alphabetical list of all `sed' commands and command-line +options. + +* Menu: + +* # (comments): Common Commands. +* --expression: Invoking sed. +* --file: Invoking sed. +* --help: Invoking sed. +* --in-place: Invoking sed. +* --line-length: Invoking sed. +* --quiet: Invoking sed. +* --regexp-extended: Invoking sed. +* --silent: Invoking sed. +* --unbuffered: Invoking sed. +* --version: Invoking sed. +* -e: Invoking sed. +* -f: Invoking sed. +* -i: Invoking sed. +* -l: Invoking sed. +* -n: Invoking sed. +* -n, forcing from within a script: Common Commands. +* -r: Invoking sed. +* -u: Invoking sed. +* : (label) command: Programming Commands. +* = (print line number) command: Other Commands. +* a (append text lines) command: Other Commands. +* b (branch) command: Programming Commands. +* c (change to text lines) command: Other Commands. +* D (delete first line) command: Other Commands. +* d (delete) command: Common Commands. +* e (evaluate) command: Extended Commands. +* G (appending Get) command: Other Commands. +* g (get) command: Other Commands. +* H (append Hold) command: Other Commands. +* h (hold) command: Other Commands. +* i (insert text lines) command: Other Commands. +* L (fLow paragraphs) command: Extended Commands. +* l (list unambiguously) command: Other Commands. +* N (append Next line) command: Other Commands. +* n (next-line) command: Common Commands. +* P (print first line) command: Other Commands. +* p (print) command: Common Commands. +* q (quit) command: Common Commands. +* Q (silent Quit) command: Extended Commands. +* r (read file) command: Other Commands. +* R (read line) command: Extended Commands. +* s command, option flags: The "s" Command. +* T (test and branch if failed) command: Extended Commands. +* t (test and branch if successful) command: Programming Commands. +* v (version) command: Extended Commands. +* w (write file) command: Other Commands. +* W (write first line) command: Extended Commands. +* x (eXchange) command: Other Commands. +* y (transliterate) command: Other Commands. +* {} command grouping: Common Commands. + + |