diff options
Diffstat (limited to 'src/awk.md')
-rw-r--r-- | src/awk.md | 44 |
1 files changed, 44 insertions, 0 deletions
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 +``` |