Subsections of GNU/Linux
Bash yaml parser
yb - a bash yaml parser
yb
provides a pure Bash solution to YAML parsing.
Usage
yb [-h|-a|-c|-q|-r|-A-C-d-F-K-l-L-R-n-T] [-f <file>|-o <object>] [-k <key>] [-v <value>|-O <object value>]
Examples
./yb -f file.yaml -k "key.childkey"
From the repository, you can do a quick try like so:
./yb -f tests/user.yaml -k "yb"
Create keys:
./yb -af tests/user.yaml -k "new.key"
add an inline-value:
./yb -af tests/user.yaml -k "new.key" -v "one, two"
change it:
./yb -cf tests/user.yaml -k "new.key" -v "three"
add list-values:
./yb -af tests/user.yaml -k "new.- list" -v "- one - two"
add an ASCII within a pipe-key:
./yb -af tests/user.yaml -k "new.ascii|" -v "|> ___ _ |> \ \// |> \ / |> / / |> /_/"
manipulate the YAML as a bash variable:
# using the '-R' raw option is advised to retrieve the content without color codes
my_YAML=$(./yb -f tests/user.yaml -k "new")
my_YAML=$(./yb -ao "${my_YAML}" -k "in_memory" -v "true")
add it to a file:
./yb -af tests/user.yaml -k "new.copy" -o "${my_YAML}"
Remove one value:
./yb -rf tests/user.yaml -k "new.- list" -v "- one"
or remove everything:
./yb -rf tests/user.yaml -k "new"
Options
yb
options are divided under 3 types:
action
: action options are ran against the file and are not compatible with each others. They are compatible withinput
, but notformat
.input
: input options are user settable options, and are compatible with each others. They are compatible with bothaction
andformat
.format
: format options print the output in various ways. They are compatible with each others, with theinput
type , but not theaction
one.
Option | Name | Type | Description | Example | Notes |
---|---|---|---|---|---|
-a | add | action | Adds key(s), value(s) or both. | yb -f "file.yaml" -a -k "key" -v "value" | |
-c | change | action | Changes value(s). | yb -f "file.yaml" -c -k "key" -v "new_value" | |
-q | query | action | Prints true or false if key(s), value(s) or both are present or not. | yb -f "file.yaml" -q -k "key" | Using single quotes is advised to retrieve a pipe value -v 'pipe value' . |
-r | remove | action | Removes key(s), value(s) or both. | yb -f "file.yaml" -r -k "key" -v "value" | Using single quotes is advised to remove a pipe value -v 'pipe value' . |
-f | file | input | YAML file path. | yb -f "file.yaml" | A file can be presented without the -f option, as the $1 option. -f and -c are not compatible with each others. |
-o | object | input | YAML object. | yb -o "${YAML_object}" | YAML object can be used with all actions. -f and -o are compatible together, only when adding an object to a file. |
-O | object value | input | YAML object value. | yb -f "file.yaml" -O "${YAML_object}" | YAML object can be used with the -a action. |
-k | key | input | Key(s) selection path. | yb -f "file.yaml" -k "key" | Support keys in this format :key , key.childkey , - list-key , pipe-key| . Multiple key(s) can be provided with a . as the separator. |
-v | value | input | Value(s) to be added, removed, queried or changed. | yb -f "file.yaml" -k "key" -v "value" | Support values in this format : value , - list-value , |> pipe-value . |
-A | array | format | Prints the output as a bash array. | yb -f "file.yaml" -A -k "key" | Will provide a different formatting if used with -F or -d . |
-C | colors | format | Force colors in a non-terminal output. | yb -Cf "file.yaml" -A -k "key" | |
-d | depth | format | Provides the output with the original depth. | yb -f "file.yaml" -d -k "key.childkey" -v "new_value" | |
-F | format | format | Prints a formatted output to represent the arborescence inline. | yb -f "file.yaml" -F -k "key" | Will provide a different formatting if used with -A or -d . |
-K | keys-only | format | Prints only keys. | yb -Kf "file.yaml" -k "key" | |
-l | line | format | Prints { {line } } on each lines. | yb -f "file.yaml" -l -k "key" | |
-L | level | format | Prints { {<level number> } } on each lines. | yb -f "file.yaml" -L -k "key" | |
-R | raw | format | Prints the ouptut without added colors, comments and empty lines. | yb -f "file.yaml" -R -k "key" | |
-n | number | format | Prints { {<line number> } } on each lines. | yb -f "file.yaml" -n -k "key" | |
-T | type | format | Prints a value type. | yb -f "file.yaml" -T -k "key" | Supports null , boolean , integer , floating number , string . |
-s | spaces | Deprecated | Spaces number selection. |
YAML support
yb
provides the basic YAML support for editing and reading a YAML file. As by version 0.9, yb
doesn’t support advanced features such as group based search, anchors, aliases, and overrides.
Thank you
All of you, YAML’ers !
Made in Bash.