diff options
Diffstat (limited to 'src/tools/sed.md')
-rw-r--r-- | src/tools/sed.md | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/tools/sed.md b/src/tools/sed.md new file mode 100644 index 0000000..1746c24 --- /dev/null +++ b/src/tools/sed.md @@ -0,0 +1,68 @@ +# sed(1) + +``` +sed [opts] [script] [file] + opts: + -i edit file in place + -i.bk edit file in place and create backup file + (with .bk suffix, can be specified differently) + -e SCRIPT add SCRIPT to commands to be executed + (can be specified multiple times) + -f FILE add content of FILE to command to be executed + + --debug annotate program execution +``` + +## Examples +### Delete lines +```sh +# Delete two lines. +echo -e 'aa\nbb\ncc\ndd' | sed '1d;3d' +# bb +# dd + +# Delete last ($) line. +echo -e 'aa\nbb\ncc\ndd' | sed '$d' +# aa +# bb +# cc + +# Delete range of lines. +echo -e 'aa\nbb\ncc\ndd' | sed '1,3d' +# dd +``` + +### Insert lines +```sh +# Insert before line. +echo -e 'aa\nbb' | sed '2iABC' +# aa +# ABC +# bb + +# Insert after line. +echo -e 'aa\nbb' | sed '2aABC' +# aa +# bb +# ABC + +# Replace line. +echo -e 'aa\nbb' | sed '2cABC' +# aa +# ABC +``` + +### Substitute lines +```sh +# Substitute by regex. +echo -e 'aafooaa\ncc' | sed 's/foo/MOOSE/' +# aaMOOSEaa +# cc +``` + +### Multiple scripts +```sh +echo -e 'foo\nbar' | sed -e 's/foo/FOO/' -e 's/FOO/BAR/' +# BAR +# bar +``` |