Grep implementation with replace
Project description
Greptile
Fast grep implementation in python, with replace features
usage: greptile.py [-h] [-v] [-x EXTENSIONS [EXTENSIONS ...]] [-r] [-l] [-i]
[-g REPLACE_EXPR] [-f REPLACE_EXPR]
expression [file]
file search and replace with regular expressions
positional arguments:
expression regular expression
file file path (or directory if -r is used)
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
-x EXTENSIONS [EXTENSIONS ...], --extensions EXTENSIONS [EXTENSIONS ...]
restrict search to file extensions (ex: .py .txt .java
.xml)
-r, --recursive recursively search in path
-l, --list list files matching pattern
-i, --inplace update the file inplace (with -g or -f)
-g REPLACE_EXPR, --replace-global REPLACE_EXPR
global replacement expression
-f REPLACE_EXPR, --replace-first REPLACE_EXPR
first occurrence replacement expression
Why fast?
Because it exclusively uses generators, reptile never allocates big lists, it always processes one line in one file at a time. you can do a search on big files and large directories like / recursively without memory overhead.
Examples:
Search "import" in ./greptile.py :
$ ./greptile.py "import" ./greptile.py
import re
import os
import sys
import argparse
Recursively search from ~/ lines in python files containing Copyright :
$ ./greptile.py -x .py -r "Copyright" ~/
/Users/nic/Library/Android/sdk/platform-tools/systrace/systrace-legacy.py 2: # Copyright (c) 2011 The Chromium Authors. All rights reserved.
/Users/nic/Library/Android/sdk/platform-tools/systrace/systrace.py 2: # Copyright (c) 2011 The Chromium Authors. All rights reserved.
/Users/nic/Library/Android/sdk/platform-tools/systrace/systrace_agent.py 0: # Copyright (c) 2015 The Chromium Authors. All rights reserved.
/Users/nic/Library/Android/sdk/platform-tools/systrace/util.py 0: # Copyright (c) 2015 The Chromium Authors. All rights reserved.
/Users/nic/Library/Android/sdk/platform-tools/systrace/agents/__init__.py 0: # Copyright (c) 2015 The Chromium Authors. All rights reserved.
/Users/nic/Library/Android/sdk/platform-tools/systrace/agents/atrace_agent.py 0: # Copyright (c) 2015 The Chromium Authors. All rights reserved.
...
Replacement & easy grouping with python re.sub syntax :
$ greptile.py "\[(.*)\]\((.*)\)" README.md -g "<a href=\"\2\">\1</a>" | diff -u README.md -
--- README.md 2016-04-19 22:37:20.000000000 +0200
+++ - 2016-04-25 14:54:24.000000000 +0200
@@ -1,4 +1,4 @@
-
+!<a href="https://github.com/google/agera/blob/master/doc/images/agera.png">Agera</a>
Reactive Programming for Android
================================
Api:
import greptile
# Replace "import" by "export" from dir `./`, in all files and these extensions: .py, .xml, .java
greptile.replace('import', 'export', './', '.py', '.xml', '.java')
# Return filenames of all files containing the text "import" from dir `./` and .py, .xml, .java
my_list = greptile.grep_rl('import', './', '.py', '.xml', '.java')
# same as calling replace()
greptile.sed_i(my_list, 'import', 'export')
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 Greptile-0.9.tar.gz.
File metadata
- Download URL: Greptile-0.9.tar.gz
- Upload date:
- Size: 2.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52ab9c1f15a93937e72682edac854f0a1527d63576a859948e9bc73062e3a31f
|
|
| MD5 |
6022831c476b00cd73ed9b6d805e354e
|
|
| BLAKE2b-256 |
0c4b40ce082f83f69992de208c56e3d6af6fe1a6213d370caca1ab76e2abe974
|
File details
Details for the file Greptile-0.9-py2.py3-none-any.whl.
File metadata
- Download URL: Greptile-0.9-py2.py3-none-any.whl
- Upload date:
- Size: 4.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27ac2382eaf187569890f7d421372cae1ccca09b4ba0c54e3e0fce8ad8fb629e
|
|
| MD5 |
32108dd3c4b338a7d8850963f5f9b0e4
|
|
| BLAKE2b-256 |
bed8256ddaf0622e4f5a4fcdcab0b967a468c50d333eb8125f6cf825d1983da7
|