A CLI tool to edit simple JSON and YAML data files
Project description
sde
sde is not sed. It's a structured data editor for CLI.
Why?
Many people asked for a simple JSON in-place editing and jq was the solution:
- Modify a key-value in a json using jq in-place
- How to modify a key's value in a JSON file from command line
jq '.address = "abcde"' test.json|sponge test.json
Does this seem readable or elegant to you?
How about this instead:
sde address abcde test.json
sde is not a substitute for jq or sed.
It allows simple in-place JSON/YAML value changes, for structured data.
Sample JSON
{
"name":"John",
"age":31,
"city":"New York",
"extra": {
"gender": null
}
}
Sample YAML
database:
user: example
password: secret
Modify data
sde name Jack data.json
sde extra.gender male data.json
sde database.user john data.yml
It is possible to modify data in arrays using a dotted notation. Let's take another sample:
{
"users": [
{
"username": "foo",
"enabled": true
},
{
"username": "bar",
"enabled": true
}
],
}
We can set the first user's enabled property to false:
sde users.0.enabled false data.json
Installation for CentOS/RHEL 7, 8 or Amazon Linux 2, or Fedora Linux
sudo yum -y install https://extras.getpagespeed.com/release-latest.rpm
sudo yum -y install sde
Installation for other systems
Installing with pip is easiest:
pip install sde
Notes
Quoting in JSON
Quoting is avoided for null, true, false, and numeric values.
To ensure that a given value is quoted, use -s (or --string) option:
sde -s key null file.json
Force-fail on missing keys
If you must edit the file, by ensuring to update only the existing key, use -e (--must-exist)
option. The program will exit without adding the key which doesn't exist.
sde -e key val file.json
Force-fail on unchanged file
If the data is unchanged after running sde (values already match), you can force
a failure exit code 2 by passing the -m option:
sde -m key sameval file.json
# > exit code 0
sde -m key sameval file.json
# > exit code 2
TODO
Work with stdin
echo $json | sde name Jack
Query simple data
sdg name data.json
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sde-1.1.12.tar.gz.
File metadata
- Download URL: sde-1.1.12.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b1a39f686ef92d6c7fe1e0dacb81833620256f2f08fa15e6ad502b8f796913e
|
|
| MD5 |
8f1c8e2be8ed82359f438cc17db7fd59
|
|
| BLAKE2b-256 |
07fd2feb07b1202bb7dd35a2ef1c91c9b3dcda989ca850f5784c05d2bb060721
|
File details
Details for the file sde-1.1.12-py3-none-any.whl.
File metadata
- Download URL: sde-1.1.12-py3-none-any.whl
- Upload date:
- Size: 9.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d7ed54941f14d291abe7c0b9a15128ce86224282389a3f45a2730adf64cae2c
|
|
| MD5 |
924aea6951be643e1a4091822c9aafba
|
|
| BLAKE2b-256 |
8725b6dacccb4ffa9b53d05f2adef0dbab1420f63ce7cc41ff4aa709942bf2f8
|