Stream Editor sed Overview and Reference
Mai 6, 2015
Views: 2139
I was missing a one-page overwiew of sed commands, so here they are:
Command Line Options
| option | description |
|---|---|
| –version | show version |
| –help | show short usage |
| -n –quiet –silent |
only produces output when explicitly told to via the p command |
| -e SCRIPT –expression=SCRIPT |
explicitly add script expression |
| -f SCRIPT-FILE –file=SCRIPT-FILE |
read script from file |
| -i[SUFFIX] –in-place[=SUFFIX] |
in place edit file, if suffix is given, creates a backup |
| -l N –line-length=N |
default line length for the l command |
| –posix | strict posix mode |
| -b –binary |
binary with regard to CR/LF problem |
| –follow-symlinks | follow links when option -i is used |
| -r –regexp-extended |
use extended regular expression syntax (GNU extension) |
| -s –separate |
treat each input file separately instead of one long stream (GNU extension) |
| -u –unbuffered |
buffer as little as possible |
| -z –null-data –zero-terminated |
separate lines with zero instead of newline |
Adresses
| addressing | description |
|---|---|
| (no address) match all lines | |
| NUMBER | select line number |
| FIRST~STEP | matches every STEPth line starting with line FIRST |
| $ | match last line |
| /REGEXP/ | match regular expression |
| // | repeat last regular expression match |
| \%REGEXP% | same as /REGEXP/, but with % as delimiter – also works for other characters |
| /REGEXP/I | match case insensitive (GNU extension) |
| /REGEXP/M | match in multi line mode, then ^ $ match begin and end of a line, \` \' match begin and end of buffer (GNU extension) |
| ADRESS1,ADDRESS2 | match address range from to, range will always span at least two lines, unless the second address is a number less than (or equal to) the line number matching the first address |
| 0,ADDRESS2 | apply ADDRESS2 already on the first line (GNU extension) |
| ADDRESS1,+N | matches for the following N lines (GNU extension) |
| ADDRESS1,-N | matches until the next line whose input line number is a multiple of N |
| ADDRESS! | negate the sense of the match |
Regular Expressions
| regexp | description |
|---|---|
| C | matches any given character C |
| . | matches any character |
| * | repeat last match zero or more times |
| \+ | repeat last match one or more times |
| \? | repeat last match zero or one times |
| \{I\} | repeat last match exactly I times (GNU extension) |
| \{I,J\} | repeat last match between I and J times (GNU extension) |
| \{I,\} | repeat last match at least I times (GNU extension) |
| \(REGEXP\) | group – can be refered as \N for the Nth group |
| ^ | matches begin of line |
| $ | matches end of line |
| [LIST] | matches any single character in list |
| [^LIST] | matches any single character except those in list |
| RE1\|RE2 | or |
| \C | escape special character C, such as $ * . [ \ ^ |
| \w | matches any «word» character (GNU extension) |
| \W | matches any «non-word» character (GNU extension) |
| \b | matches a word boundary (GNU extension) |
| \B | matches everywhere but on a word boundary (GNU extension) |
| \` | matches only at the start of pattern space (file) (GNU extension) |
| \‘ | matches only at the end of pattern space (file) (GNU extension) |
| \s | matches a white space character |
Escapes
| char | description |
|---|---|
| \a | produces or matches a BEL character (GNU extension) |
| \f | produces or matches a form feed (GNU extension) |
| \n | produces or matches a newline (GNU extension) |
| \r | produces or matches a carriage return (GNU extension) |
| \t | produces or matches a horizontal tab (GNU extension) |
| \v | produces or matches a vertical tab (GNU extension) |
| \cX | produces or matches CONTROL-X (GNU extension) |
| \dXXX | produces or matches a character whose decimal ASCII value is XXX (GNU extension) |
| \oXXX | produces or matches a character whose octal ASCII value is XXX (GNU extension) |
| \xXX | produces or matches a character whose hexadecimal ASCII value is XX (GNU extension) |
Commands
| command | description |
|---|---|
| # | comment line (no address) |
| q [EXIT-CODE] | exit with optional exit code |
| Q [EXIT-CODE] | quit without printing current line (GNU extension) |
| d | delete pattern space, start next cycle |
| D | delete up to first newline, then restart without reading a new line of input |
| p | print pattern space |
| P | print up to first newline |
| n | proceed to next line |
| N | append new line plus next line from input |
| a\ TEXT |
append text after (GNU extension: this command accepts two addresses) |
| aTEXT\ OPTIONAL-MORE-TEXT |
append text (simplified GNU extension) |
| i\ TEXT |
insert text before (otherwise same as append text after) |
| c\ TEXT |
replace text (otherwise same as append text after) |
| = | print input line number (GNU extension: this command accepts two addresses) |
| l N | print in C style printable format, wrap long lines at N characters (GNU extension: N) |
| L N | joins lines in pattern space to produce output lines of (at most) N characters – deprecated (GNU extension) |
| r FILENAME | append a file (GNU extension: this command accepts two addresses) |
| R FILENAME | append only a single line of a file (GNU extension) |
| w FILENAME | write to a file, or append if the same file name is given several times |
| W FILENAME | write up to first newline (GNU extension) |
| h | copy to buffer |
| H | append to buffer with preseeding new line |
| g | copy from buffer |
| G | append newline plus content of buffer |
| x | exchange current line with buffer |
| : LABEL | label to branch to |
| b LABEL | branch to label |
| t LABEL | branch to label if there was a successful substitution since last line was read or since last conditional branch |
| T LABEL | branch to label only if there was no successful substitution (GNU extension) |
| e COMMAND | pipe input from shell command (GNU extension) |
| e | pipe input from command in current line (GNU extension) |
| F | print file name of current input (GNU extension) |
| v VERSION | fail if current sed’s version is lower (GNU extension) |
| z | drop whole content of current line (GNU extension) |
| { COMMANDS } | group commands |
| s/REGEXP/REPLACEMENT/FLAGS | search replace, instead of / you can use other characters
|
| y/SOURCE-CHARS/DEST-CHARS/ | replace character by character, such as in tr, instead of / you can use other characters |