From fb719f52b73920fb18c7f3080ebb1fc73300be49 Mon Sep 17 00:00:00 2001 From: johannst Date: Tue, 17 Mar 2020 23:48:21 +0100 Subject: added awk --- src/SUMMARY.md | 1 + src/awk.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 src/awk.md (limited to 'src') 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 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 +``` -- cgit v1.2.3