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')
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Greptile-0.9.tar.gz
(2.7 kB
view details)
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
|