diff options
-rw-r--r-- | src/SUMMARY.md | 1 | ||||
-rw-r--r-- | src/awk.md | 44 |
2 files changed, 45 insertions, 0 deletions
diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 7f385d7..fe0b341 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -2,6 +2,7 @@ - [ld.so](./ld.so.md) - [git](./git.md) +- [awk](./awk.md) - [gdb](./gdb.md) - [radare2](./radare2.md) - [emacs](./emacs.md) diff --git a/src/awk.md b/src/awk.md new file mode 100644 index 0000000..0186416 --- /dev/null +++ b/src/awk.md @@ -0,0 +1,44 @@ +# awk(1) + +```markdown +awk [opt] program [input] + -F <sepstr> field separator string (can be regex) + program awk program + input file or stdin if not file given +``` + +## Input processing + +Input is processed in two stages: +1. Splitting input into a sequence of `records`. + By default split at `newline` character, but can be changed via the + builtin `RS` variable. +2. Splitting a `record` into `fields`. By default strings without `whitespace`, + but can be changed via the builtin variable `FS` or command line option + `-F`. + +Field are accessed as follows: +- `$0` whole `record` +- `$1` field one +- `$2` field two +- ... + +## Program + +An `awk` program is composed of pairs of the form: +```markdown +pattern { action } +``` +The program is run against each `record` in the input stream. If a `pattern` +matches a `record` the corresponding `action` is executed and can access the +`fields`. + +```markdown +INPUT + | + v +record ----> ∀ pattern matched + | | + v v +fields ----> run associated action +``` |