Skip to main content

A command line tool to apply substitutions to a text file

Project description

apply-subs

PyPI PyPI codecov pre-commit.ci status Imports: isort Code style: black

A command line application to apply a dictionnary (json) of substitutions to text file corpus. This program is a find-and-replace tool to perform a arbitrarily large set of substitutions in a reproducible fashion.

Disclaimer, this app is far less powerful than sed and in particular doesn't support regex replacement. What it offers a simpler interface to make simple sweeping changes across a whole project in a reproducible fashion.

Installation

The easiest installation method is

$ pip install apply-subs

In order to install apply-subs in isolation, use pipx instead.

Examples

apply-subs uses a json file as input. This file should specify substitutions as new: old, where old can either be a single str, or a list of strings.

minimal case

echo "bunnies and bongos and bananas" > mytext.txt
echo '{"bunnies": "rabbits", "SECRETS": ["bongos", "bananas"]}' > mysubs.json
apply-subs mytext.txt -s mysubs.json

will print the patched content

bunnies and SECRETS and SECRETS

diff mode

Use diff mode (-d/--diff) to print a diff instead of the end result

--- mytext.txt
+++ mytext.txt (patched)
@@ -1 +1 @@
-Lorem ipsum dolor sit amet, consectetur adipiscing elit
+Hello dolor sit amet, consectetur goodbye

Use -cp/--cdiff/--colored-diff for a colored output (when supported).

inplace substitutions

-i/--inplace

apply-subs --inplace mytext.txt -s mysubs.json

is equivalent to

apply-subs mytext.txt -s mysubs.json > mytext.txt

target several files in one go

The target positional argument can consist of a single file (as illustrated above), or many. This is useful for instance if you need to apply a set of subtitutions to all files in a project whose name match a regexp.

git ls-files | egrep "(.md|.py)$" | xargs apply-subs -s subsubs.json -i

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

apply_subs-0.5.5.tar.gz (16.7 kB view details)

Uploaded Source

Built Distribution

apply_subs-0.5.5-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

Details for the file apply_subs-0.5.5.tar.gz.

File metadata

  • Download URL: apply_subs-0.5.5.tar.gz
  • Upload date:
  • Size: 16.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.9.1

File hashes

Hashes for apply_subs-0.5.5.tar.gz
Algorithm Hash digest
SHA256 5dc5c0442eec945ff34f76dd044d83d4afd442fdc70f87a204280fc793db9a6f
MD5 95720eafdfe3fb71732aa1fce1707469
BLAKE2b-256 83ea6e0df80e74a60e65c8b5ace51b01e2e49482f02c63ebbb5404e17278cb8d

See more details on using hashes here.

File details

Details for the file apply_subs-0.5.5-py3-none-any.whl.

File metadata

  • Download URL: apply_subs-0.5.5-py3-none-any.whl
  • Upload date:
  • Size: 16.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.9.1

File hashes

Hashes for apply_subs-0.5.5-py3-none-any.whl
Algorithm Hash digest
SHA256 9ad46e1bb208878b4b252d1f1048a062ea588dfaa88b58e1394e96681367bd0c
MD5 7523c8bc1907afbdb4ee6ef940b95286
BLAKE2b-256 70e9d5835110b2cf7d175a9ec5ca9dc5001f2c0cc6ef2916337e714e1215825e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page