This commit is contained in:
Mike Farah 2023-02-20 16:08:51 +11:00
parent 3f13bf65a1
commit 814a6114a8
5 changed files with 144 additions and 0 deletions

View File

@ -51,6 +51,7 @@
* [Reduce](operators/reduce.md) * [Reduce](operators/reduce.md)
* [Reverse](operators/reverse.md) * [Reverse](operators/reverse.md)
* [Select](operators/select.md) * [Select](operators/select.md)
* [Shuffle](operators/shuffle.md)
* [Slice Array](operators/slice-array.md) * [Slice Array](operators/slice-array.md)
* [Sort](operators/sort.md) * [Sort](operators/sort.md)
* [Sort Keys](operators/sort-keys.md) * [Sort Keys](operators/sort-keys.md)

View File

@ -86,6 +86,30 @@ a: cool
updated: 2021-05-19T01:02:03Z updated: 2021-05-19T01:02:03Z
``` ```
## From Unix
Converts from unix time. Note, you don't have to pipe through the tz operator :)
Running
```bash
yq --null-input '1675301929 | from_unix | tz("UTC")'
```
will output
```yaml
2023-02-02T01:38:49Z
```
## To Unix
Converts to unix time
Running
```bash
yq --null-input 'now | to_unix'
```
will output
```yaml
1621386123
```
## Timezone: from standard RFC3339 format ## Timezone: from standard RFC3339 format
Returns a new datetime in the specified timezone. Specify standard IANA Time Zone format or 'utc', 'local'. When given a single parameter, this assumes the datetime is in RFC3339 format. Returns a new datetime in the specified timezone. Specify standard IANA Time Zone format or 'utc', 'local'. When given a single parameter, this assumes the datetime is in RFC3339 format.

View File

@ -16,6 +16,8 @@ These operators are useful to process yaml documents that have stringified embed
| TSV | from_tsv/@tsvd | to_tsv/@tsv | | TSV | from_tsv/@tsvd | to_tsv/@tsv |
| XML | from_xml/@xmld | to_xml(i)/@xml | | XML | from_xml/@xmld | to_xml(i)/@xml |
| Base64 | @base64d | @base64 | | Base64 | @base64d | @base64 |
| URI | @urid | @uri |
| Shell | | @sh |
See CSV and TSV [documentation](https://mikefarah.gitbook.io/yq/usage/csv-tsv) for accepted formats. See CSV and TSV [documentation](https://mikefarah.gitbook.io/yq/usage/csv-tsv) for accepted formats.
@ -435,6 +437,50 @@ will output
YTogYXBwbGUK YTogYXBwbGUK
``` ```
## Encode a string to uri
Given a sample.yml file of:
```yaml
coolData: this has & special () characters *
```
then
```bash
yq '.coolData | @uri' sample.yml
```
will output
```yaml
this+has+%26+special+%28%29+characters+%2A
```
## Decode a URI to a string
Given a sample.yml file of:
```yaml
this+has+%26+special+%28%29+characters+%2A
```
then
```bash
yq '@urid' sample.yml
```
will output
```yaml
this has & special () characters *
```
## Encode a string to sh
Sh/Bash friendly string
Given a sample.yml file of:
```yaml
coolData: strings with spaces and a 'quote'
```
then
```bash
yq '.coolData | @sh' sample.yml
```
will output
```yaml
strings' with spaces and a '\'quote\'
```
## Decode a base64 encoded string ## Decode a base64 encoded string
Decoded data is assumed to be a string. Decoded data is assumed to be a string.

51
operators/shuffle.md Normal file
View File

@ -0,0 +1,51 @@
# Shuffle
Shuffles an array. Note that this command does _not_ use a cryptographically secure random number generator to randomise the array order.
## Shuffle array
Given a sample.yml file of:
```yaml
- 1
- 2
- 3
- 4
- 5
```
then
```bash
yq 'shuffle' sample.yml
```
will output
```yaml
- 5
- 2
- 4
- 1
- 3
```
## Shuffle array in place
Given a sample.yml file of:
```yaml
cool:
- 1
- 2
- 3
- 4
- 5
```
then
```bash
yq '.cool |= shuffle' sample.yml
```
will output
```yaml
cool:
- 5
- 2
- 4
- 1
- 3
```

View File

@ -25,6 +25,28 @@ will output
- a: cat - a: cat
``` ```
## Sort by multiple fields
Given a sample.yml file of:
```yaml
- a: dog
- a: cat
b: banana
- a: cat
b: apple
```
then
```bash
yq 'sort_by(.a, .b)' sample.yml
```
will output
```yaml
- a: cat
b: apple
- a: cat
b: banana
- a: dog
```
## Sort descending by string field ## Sort descending by string field
Use sort with reverse to sort in descending order. Use sort with reverse to sort in descending order.