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
Metadata
Release files for sde 1.1.12
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| sde-1.1.12.tar.gz | 11.3 kB | Without provenance | Details for sde-1.1.12.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| sde-1.1.12-py3-none-any.whl | Python 3 | none | any | Details for sde-1.1.12-py3-none-any.whl |
Total release size: 21.1 kB
Release files / sde-1.1.12.tar.gz
| Download URL | sde-1.1.12.tar.gz |
|---|---|
| Size | 11.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3b1a39f686ef92d6c7fe1e0dacb81833620256f2f08fa15e6ad502b8f796913e
|
|
BLAKE2b-256 checksum How to use checksums |
07fd2feb07b1202bb7dd35a2ef1c91c9b3dcda989ca850f5784c05d2bb060721
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.0 CPython/3.12.3
|
Release files / sde-1.1.12-py3-none-any.whl
| Download URL | sde-1.1.12-py3-none-any.whl |
|---|---|
| Size | 9.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2d7ed54941f14d291abe7c0b9a15128ce86224282389a3f45a2730adf64cae2c
|
|
BLAKE2b-256 checksum How to use checksums |
8725b6dacccb4ffa9b53d05f2adef0dbab1420f63ce7cc41ff4aa709942bf2f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.0 CPython/3.12.3
|
Security for sde 1.1.12
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.