Skip to main content

reprec: Recursively replace strings in files and other goodies

Project description

reprec: Recursively replace strings in files and other goodies

Command line tool for text files.


Up to now there are these tools:

  • reprec: Replace strings in text files. Can work recursive in a directory tree
  • setops: Set operations (union, intersection, …) for line based files.


The tool reprec replaces strings in text files:

===> reprec --help
Usage: reprec
         [-p|--pattern] p
         [-i|--insert] i
         [-f|--filename regex]
         [--files-from file|-]
         [--ignore regex]


    dirs:        Directories or files for replacing. Use is '.' for current dir.

    pattern:     Regex pattern.

    insert:      Text which gets inserted

    filename:    Regex matching the filename. E.g. '.*\.py'

    no-regex:    Normal string replacement will be used.
                 This means you can use '.', '*', '[' without quoting

    verbose:     Print the number of changes for each file

    print-lines: Print the old and the new line for each change.
                 Not available if --dotall is used.

    dotall:      In regular expressions '.' matches newlines, too.
                 Not supported with --ask and --print-lines.

    ignorecase:  ...

    novcexclude: Don't exclude the directories called '.svn' or 'CVS'.
                 By default they get ignored.

    ask:         Aks before replacing (interactive).

    files-from:  Read filenames from file or stdin if '-'.
                 Skip directories.

    ignore:      Ignore lines that match a regular expression.
                 This options can be given several times.

     reprec --pattern '(xml)' --insert '\1\1' .
     -->This will replace all 'xml' with 'xmlxml'

     Or, shorter:
     reprec '(xml)' '\1\1'

     find -mtime -1 -name '*.py' | reprec --files-from=- foo bar

    The Perl Compatible Regular Expresssions are explained here:

    The files are created by moving (os.rename()) FILE_RANDOMINTEGER
    to FILE. This way no half written files will be left, if the
    process gets killed. If the process gets killed one FILE_RANDOMINTEGER
    may be left in the filesystem.


The tool setops provides set operations (union, intersection, …) for line based files:

usage: setops [-h] set1 operator set2

  union Aliases: | + or
  intersection Aliases: & and
  difference Aliases: - minus
  symmetric_difference Aliases: ^


#Show all files in directory "a" which are not in directory "b":
setops <(cd a; find ) - <(cd b; find )

# Create some files for testing
echo foo > foo.txt
echo bar > bar.txt
echo foobar > foobar.txt

# All files minus files containing "foo"
user@host$ setops <(ls *.txt) - <(grep -l foo *.txt)

# All files containing "foo" or "bar" minus files which contain "foobar"
setops <(setops <(grep -l bar *.txt) + <(grep -l foo *.txt)) - <(grep -l foobar *.txt)

positional arguments:

optional arguments:
  -h, --help  show this help message and exit


Install from pypi:

pip install reprec

Project details

Download files

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

Files for reprec, version 2021.33.0
Filename, size File type Python version Upload date Hashes
Filename, size reprec-2021.33.0.tar.gz (9.2 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page