From d66fdbe1963ad9561a336ec95e476e41381a2d91 Mon Sep 17 00:00:00 2001 From: Johannes Stoelp Date: Thu, 18 Jan 2024 00:12:48 +0100 Subject: sed: add initial examples --- src/tools/README.md | 1 + src/tools/sed.md | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 src/tools/sed.md (limited to 'src/tools') diff --git a/src/tools/README.md b/src/tools/README.md index 2aa2f5c..7b9b184 100644 --- a/src/tools/README.md +++ b/src/tools/README.md @@ -17,3 +17,4 @@ - [ffmpeg](./ffmpeg.md) - [column](./column.md) - [sort](./sort.md) +- [sed](./sed.md) 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 +``` -- cgit v1.2.3