{
"info": {
"author": "Nicolas Cornette",
"author_email": "nicolas.cornette@gmail.com",
"bugtrack_url": null,
"classifiers": [],
"description": "| |Build Status|\r\n| |Codacy Badge|\r\n| |codecov|\r\n\r\nGreptile\r\n========\r\n\r\nFast grep implementation in python, with replace features\r\n\r\n::\r\n\r\n usage: greptile.py [-h] [-v] [-x EXTENSIONS [EXTENSIONS ...]] [-r] [-l] [-i]\r\n [-g REPLACE_EXPR] [-f REPLACE_EXPR]\r\n expression [file]\r\n\r\n file search and replace with regular expressions\r\n\r\n positional arguments:\r\n expression regular expression\r\n file file path (or directory if -r is used)\r\n\r\n optional arguments:\r\n -h, --help show this help message and exit\r\n -v, --version show program's version number and exit\r\n -x EXTENSIONS [EXTENSIONS ...], --extensions EXTENSIONS [EXTENSIONS ...]\r\n restrict search to file extensions (ex: .py .txt .java\r\n .xml)\r\n -r, --recursive recursively search in path\r\n -l, --list list files matching pattern\r\n -i, --inplace update the file inplace (with -g or -f)\r\n -g REPLACE_EXPR, --replace-global REPLACE_EXPR\r\n global replacement expression\r\n -f REPLACE_EXPR, --replace-first REPLACE_EXPR\r\n first occurrence replacement expression\r\n\r\nWhy fast?\r\n~~~~~~~~~\r\n\r\nBecause it exclusively uses generators, reptile never allocates big\r\nlists, it always processes one line in one file at a time. you can do a\r\nsearch on big files and large directories like ``/`` recursively without\r\nmemory overhead.\r\n\r\nExamples:\r\n~~~~~~~~~\r\n\r\nSearch ``\"import\"`` in ./greptile.py :\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\n.. code:: bash\r\n\r\n $ ./greptile.py \"import\" ./greptile.py\r\n\r\n.. code:: bash\r\n\r\n import re\r\n import os\r\n import sys\r\n import argparse\r\n\r\nRecursively search from ``~/`` lines in python files containing ``Copyright`` :\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\n.. code:: bash\r\n\r\n $ ./greptile.py -x .py -r \"Copyright\" ~/\r\n\r\n.. code:: bash\r\n\r\n /Users/nic/Library/Android/sdk/platform-tools/systrace/systrace-legacy.py 2: # Copyright (c) 2011 The Chromium Authors. All rights reserved.\r\n /Users/nic/Library/Android/sdk/platform-tools/systrace/systrace.py 2: # Copyright (c) 2011 The Chromium Authors. All rights reserved.\r\n /Users/nic/Library/Android/sdk/platform-tools/systrace/systrace_agent.py 0: # Copyright (c) 2015 The Chromium Authors. All rights reserved.\r\n /Users/nic/Library/Android/sdk/platform-tools/systrace/util.py 0: # Copyright (c) 2015 The Chromium Authors. All rights reserved.\r\n /Users/nic/Library/Android/sdk/platform-tools/systrace/agents/__init__.py 0: # Copyright (c) 2015 The Chromium Authors. All rights reserved.\r\n /Users/nic/Library/Android/sdk/platform-tools/systrace/agents/atrace_agent.py 0: # Copyright (c) 2015 The Chromium Authors. All rights reserved.\r\n ...\r\n\r\nReplacement & easy grouping with python ``re.sub`` syntax :\r\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\r\n.. code:: bash\r\n\r\n $ greptile.py \"\\[(.*)\\]\\((.*)\\)\" README.md -g \"\\1\" | diff -u README.md -\r\n\r\n.. code:: diff\r\n\r\n --- README.md 2016-04-19 22:37:20.000000000 +0200\r\n +++ - 2016-04-25 14:54:24.000000000 +0200\r\n @@ -1,4 +1,4 @@\r\n -\r\n +!Agera\r\n Reactive Programming for Android\r\n ================================\r\n\r\nApi:\r\n~~~~\r\n\r\n.. code:: python\r\n\r\n import greptile\r\n\r\n # Replace \"import\" by \"export\" from dir `./`, in all files and these extensions: .py, .xml, .java\r\n greptile.replace('import', 'export', './', '.py', '.xml', '.java')\r\n\r\n # Return filenames of all files containing the text \"import\" from dir `./` and .py, .xml, .java\r\n my_list = greptile.grep_rl('import', './', '.py', '.xml', '.java')\r\n\r\n # same as calling replace()\r\n greptile.sed_i(my_list, 'import', 'export')\r\n\r\n.. |Build Status| image:: https://travis-ci.org/ncornette/greptile.svg?branch=master\r\n :target: https://travis-ci.org/ncornette/greptile\r\n.. |Codacy Badge| image:: https://api.codacy.com/project/badge/grade/a046f045b39a419b9f31ff1fb324d9a8\r\n :target: https://www.codacy.com/app/nicolas-cornette/greptile\r\n.. |codecov| image:: https://codecov.io/gh/ncornette/greptile/branch/master/graph/badge.svg\r\n :target: https://codecov.io/gh/ncornette/greptile",
"description_content_type": null,
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/ncornette/greptile",
"keywords": "",
"license": "",
"maintainer": "",
"maintainer_email": "",
"name": "Greptile",
"package_url": "https://pypi.org/project/Greptile/",
"platform": "UNKNOWN",
"project_url": "https://pypi.org/project/Greptile/",
"project_urls": {
"Homepage": "https://github.com/ncornette/greptile"
},
"release_url": "https://pypi.org/project/Greptile/0.9/",
"requires_dist": null,
"requires_python": "",
"summary": "Grep implementation with replace",
"version": "0.9"
},
"last_serial": 2132141,
"releases": {
"0.8": [
{
"comment_text": "",
"digests": {
"md5": "3bacbab528422daeb3da31fb126adf13",
"sha256": "3df12a367f15538a2329911622d226f9a6d445f971309df550f2b8115336e9ac"
},
"downloads": -1,
"filename": "Greptile-0.8-py2.7.egg",
"has_sig": false,
"md5_digest": "3bacbab528422daeb3da31fb126adf13",
"packagetype": "bdist_egg",
"python_version": "2.7",
"requires_python": null,
"size": 5882,
"upload_time": "2016-04-26T13:20:36",
"url": "https://files.pythonhosted.org/packages/45/bf/5c40c9d6b97703a5f13c2d31f0aca329d700cf56d3dd5b5b1c792ca7a573/Greptile-0.8-py2.7.egg"
},
{
"comment_text": "",
"digests": {
"md5": "57da8e089ba28ef452c33e9903173ff1",
"sha256": "fdedc87d229dad033aa6e9d537226cf8093d5727655f56e869370fb20fa44727"
},
"downloads": -1,
"filename": "Greptile-0.8-py2-none-any.whl",
"has_sig": false,
"md5_digest": "57da8e089ba28ef452c33e9903173ff1",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 3956,
"upload_time": "2016-04-26T13:20:22",
"url": "https://files.pythonhosted.org/packages/78/40/e7dba3fb4e7a639ff0ba061ef0132761753f6221ecf14a1d4913d8163fd8/Greptile-0.8-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "8b2460e6aa00a047a9ebd8b94cdbc8f6",
"sha256": "a40c16d26c4a62678b375c16d858664dd9a8877ee5d18b2619496d6005ea16c7"
},
"downloads": -1,
"filename": "Greptile-0.8.tar.gz",
"has_sig": false,
"md5_digest": "8b2460e6aa00a047a9ebd8b94cdbc8f6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 2629,
"upload_time": "2016-04-26T13:20:48",
"url": "https://files.pythonhosted.org/packages/44/ff/f9b1b6ddcb1cee961ce37aba5712d9875c172fc47d00105d42f0ae983993/Greptile-0.8.tar.gz"
}
],
"0.9": [
{
"comment_text": "",
"digests": {
"md5": "32108dd3c4b338a7d8850963f5f9b0e4",
"sha256": "27ac2382eaf187569890f7d421372cae1ccca09b4ba0c54e3e0fce8ad8fb629e"
},
"downloads": -1,
"filename": "Greptile-0.9-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "32108dd3c4b338a7d8850963f5f9b0e4",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 3957,
"upload_time": "2016-05-08T12:54:19",
"url": "https://files.pythonhosted.org/packages/be/d8/256ddaf0622e4f5a4fcdcab0b967a468c50d333eb8125f6cf825d1983da7/Greptile-0.9-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "6022831c476b00cd73ed9b6d805e354e",
"sha256": "52ab9c1f15a93937e72682edac854f0a1527d63576a859948e9bc73062e3a31f"
},
"downloads": -1,
"filename": "Greptile-0.9.tar.gz",
"has_sig": false,
"md5_digest": "6022831c476b00cd73ed9b6d805e354e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 2654,
"upload_time": "2016-05-08T12:54:25",
"url": "https://files.pythonhosted.org/packages/0c/4b/40ce082f83f69992de208c56e3d6af6fe1a6213d370caca1ab76e2abe974/Greptile-0.9.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "32108dd3c4b338a7d8850963f5f9b0e4",
"sha256": "27ac2382eaf187569890f7d421372cae1ccca09b4ba0c54e3e0fce8ad8fb629e"
},
"downloads": -1,
"filename": "Greptile-0.9-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "32108dd3c4b338a7d8850963f5f9b0e4",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 3957,
"upload_time": "2016-05-08T12:54:19",
"url": "https://files.pythonhosted.org/packages/be/d8/256ddaf0622e4f5a4fcdcab0b967a468c50d333eb8125f6cf825d1983da7/Greptile-0.9-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "6022831c476b00cd73ed9b6d805e354e",
"sha256": "52ab9c1f15a93937e72682edac854f0a1527d63576a859948e9bc73062e3a31f"
},
"downloads": -1,
"filename": "Greptile-0.9.tar.gz",
"has_sig": false,
"md5_digest": "6022831c476b00cd73ed9b6d805e354e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 2654,
"upload_time": "2016-05-08T12:54:25",
"url": "https://files.pythonhosted.org/packages/0c/4b/40ce082f83f69992de208c56e3d6af6fe1a6213d370caca1ab76e2abe974/Greptile-0.9.tar.gz"
}
]
}