Name | zrep JSON |
Version |
0.2.4
JSON |
| download |
home_page | None |
Summary | A user-friendly recursive string replacement tool |
upload_time | 2025-07-18 08:21:24 |
maintainer | None |
docs_url | None |
author | bigzhu |
requires_python | <4.0,>=3.10 |
license | MIT |
keywords |
replace
text
string
recursive
sed
find-replace
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# zrep
[](https://github.com/bigzhu/zrep/actions/workflows/ci.yml)
[](https://github.com/bigzhu/zrep/actions/workflows/codeql.yml)
[](https://github.com/bigzhu/zrep/actions/workflows/release.yml)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
z replace, 用于替换文件中的字符串
## 作用
和 shell 提供的 `sed` 一样,就是在文件中查找替换字符串的.
不过这个默认遍历当前目录的所有子目录的所有文件.
## 为什么要有这个
我喜欢用 vim, 没有 IDE 替换一个项目的 n 多文件有些麻烦.(别让我用 vim 的替换!)
`sed` 有些反人类, 看看这个
sed -i "s/要查找的字符串/替换字符串/g" `grep "要查找的字符串" -rl 目录`
我还没提字符串里要是有要转义的字符的情况呢.
加上一段引用自 [yinwang](http://www.yinwang.org/) 的说明吧:
在我所在的软件行业里, 就有很多这样的设计错误。在我看来, 整个软件行业基本就是建立在一堆堆的设计失误之上。做程序员如此困难和辛苦, 大部分原因就是因为软件系统里面积累了大量前人的设计失误, 所以我们需要做大量的工作来弥补或者绕过。举个例子, Unix/Linux 操作系统就是一个重大的设计失误。Unix 系统的命令行, 系统 API,各种工具程序, 编辑器, 程序语言(C,C++等),设计其实都很糟糕。很多工具程序似乎故意设计得晦涩难用, 让人摸不着头脑, 需要大量时间学习, 而且容易出错。出错之后难以发现, 难以弥补.
然而一般程序员都没有意识到这里面的设计错误, 知道了也不敢指出来, 他们反而喜欢显示自己死记硬背得住这些稀奇古怪的规则。这就导致了软件行业的“皇帝的新装现象”——没有人敢说工具的设计有毛病, 因为如果你说出来, 别人就会认为你在抱怨, 那你不是经验不足, 就是能力不行。这就像你不敢说皇帝没穿衣服, 否则别人就会认为你就是白痴或者不称职的人! Unix 系统的同盟者和后裔们(Linux,C 语言, Go 语言),俨然形成了这样一种霸权, 他们鄙视觉得它们难用, 质疑它们的设计的人。他们嘲笑这些用户为失败者, 即使其实有些“用户”水平比 Unix 的设计者还要高。久而久之, 他们封住了人们的嘴, 让人误以为难用的东西就是好的.
## install
```bash
pip install zrep
```
## 使用
尽量还是加上"",这样你就完全不用去管转义和特殊字符的问题了
replace.py "要替换的字符串" "替换成什么"
- 不支持正则
- 小心使用, 会替换所有子目录里的文件的
- 已经做了限制, 不会去影响到 .git node_modules 里面的内容,也不会破坏 git node_modules
- 跳过了二进制文件
Raw data
{
"_id": null,
"home_page": null,
"name": "zrep",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.10",
"maintainer_email": null,
"keywords": "replace, text, string, recursive, sed, find-replace",
"author": "bigzhu",
"author_email": "vermiliondun@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/a8/64/33b7a5de8256a9724c53b76d1878cb1773615c00d6a844464afe64dbc0c5/zrep-0.2.4.tar.gz",
"platform": null,
"description": "# zrep\n\n[](https://github.com/bigzhu/zrep/actions/workflows/ci.yml)\n[](https://github.com/bigzhu/zrep/actions/workflows/codeql.yml)\n[](https://github.com/bigzhu/zrep/actions/workflows/release.yml)\n[](https://www.python.org/downloads/)\n[](https://opensource.org/licenses/MIT)\n\nz replace, \u7528\u4e8e\u66ff\u6362\u6587\u4ef6\u4e2d\u7684\u5b57\u7b26\u4e32\n\n## \u4f5c\u7528\n\n\u548c shell \u63d0\u4f9b\u7684 `sed` \u4e00\u6837,\u5c31\u662f\u5728\u6587\u4ef6\u4e2d\u67e5\u627e\u66ff\u6362\u5b57\u7b26\u4e32\u7684.\n\n\u4e0d\u8fc7\u8fd9\u4e2a\u9ed8\u8ba4\u904d\u5386\u5f53\u524d\u76ee\u5f55\u7684\u6240\u6709\u5b50\u76ee\u5f55\u7684\u6240\u6709\u6587\u4ef6.\n\n## \u4e3a\u4ec0\u4e48\u8981\u6709\u8fd9\u4e2a\n\n\u6211\u559c\u6b22\u7528 vim, \u6ca1\u6709 IDE \u66ff\u6362\u4e00\u4e2a\u9879\u76ee\u7684 n \u591a\u6587\u4ef6\u6709\u4e9b\u9ebb\u70e6.(\u522b\u8ba9\u6211\u7528 vim \u7684\u66ff\u6362!)\n\n`sed` \u6709\u4e9b\u53cd\u4eba\u7c7b, \u770b\u770b\u8fd9\u4e2a\n\n sed -i \"s/\u8981\u67e5\u627e\u7684\u5b57\u7b26\u4e32/\u66ff\u6362\u5b57\u7b26\u4e32/g\" `grep \"\u8981\u67e5\u627e\u7684\u5b57\u7b26\u4e32\" -rl \u76ee\u5f55`\n\n\u6211\u8fd8\u6ca1\u63d0\u5b57\u7b26\u4e32\u91cc\u8981\u662f\u6709\u8981\u8f6c\u4e49\u7684\u5b57\u7b26\u7684\u60c5\u51b5\u5462.\n\n\u52a0\u4e0a\u4e00\u6bb5\u5f15\u7528\u81ea [yinwang](http://www.yinwang.org/) \u7684\u8bf4\u660e\u5427:\n\n \u5728\u6211\u6240\u5728\u7684\u8f6f\u4ef6\u884c\u4e1a\u91cc, \u5c31\u6709\u5f88\u591a\u8fd9\u6837\u7684\u8bbe\u8ba1\u9519\u8bef\u3002\u5728\u6211\u770b\u6765, \u6574\u4e2a\u8f6f\u4ef6\u884c\u4e1a\u57fa\u672c\u5c31\u662f\u5efa\u7acb\u5728\u4e00\u5806\u5806\u7684\u8bbe\u8ba1\u5931\u8bef\u4e4b\u4e0a\u3002\u505a\u7a0b\u5e8f\u5458\u5982\u6b64\u56f0\u96be\u548c\u8f9b\u82e6, \u5927\u90e8\u5206\u539f\u56e0\u5c31\u662f\u56e0\u4e3a\u8f6f\u4ef6\u7cfb\u7edf\u91cc\u9762\u79ef\u7d2f\u4e86\u5927\u91cf\u524d\u4eba\u7684\u8bbe\u8ba1\u5931\u8bef, \u6240\u4ee5\u6211\u4eec\u9700\u8981\u505a\u5927\u91cf\u7684\u5de5\u4f5c\u6765\u5f25\u8865\u6216\u8005\u7ed5\u8fc7\u3002\u4e3e\u4e2a\u4f8b\u5b50, Unix/Linux \u64cd\u4f5c\u7cfb\u7edf\u5c31\u662f\u4e00\u4e2a\u91cd\u5927\u7684\u8bbe\u8ba1\u5931\u8bef\u3002Unix \u7cfb\u7edf\u7684\u547d\u4ee4\u884c, \u7cfb\u7edf API\uff0c\u5404\u79cd\u5de5\u5177\u7a0b\u5e8f, \u7f16\u8f91\u5668, \u7a0b\u5e8f\u8bed\u8a00(C\uff0cC++\u7b49)\uff0c\u8bbe\u8ba1\u5176\u5b9e\u90fd\u5f88\u7cdf\u7cd5\u3002\u5f88\u591a\u5de5\u5177\u7a0b\u5e8f\u4f3c\u4e4e\u6545\u610f\u8bbe\u8ba1\u5f97\u6666\u6da9\u96be\u7528, \u8ba9\u4eba\u6478\u4e0d\u7740\u5934\u8111, \u9700\u8981\u5927\u91cf\u65f6\u95f4\u5b66\u4e60, \u800c\u4e14\u5bb9\u6613\u51fa\u9519\u3002\u51fa\u9519\u4e4b\u540e\u96be\u4ee5\u53d1\u73b0, \u96be\u4ee5\u5f25\u8865.\n\n \u7136\u800c\u4e00\u822c\u7a0b\u5e8f\u5458\u90fd\u6ca1\u6709\u610f\u8bc6\u5230\u8fd9\u91cc\u9762\u7684\u8bbe\u8ba1\u9519\u8bef, \u77e5\u9053\u4e86\u4e5f\u4e0d\u6562\u6307\u51fa\u6765, \u4ed6\u4eec\u53cd\u800c\u559c\u6b22\u663e\u793a\u81ea\u5df1\u6b7b\u8bb0\u786c\u80cc\u5f97\u4f4f\u8fd9\u4e9b\u7a00\u5947\u53e4\u602a\u7684\u89c4\u5219\u3002\u8fd9\u5c31\u5bfc\u81f4\u4e86\u8f6f\u4ef6\u884c\u4e1a\u7684\u201c\u7687\u5e1d\u7684\u65b0\u88c5\u73b0\u8c61\u201d\u2014\u2014\u6ca1\u6709\u4eba\u6562\u8bf4\u5de5\u5177\u7684\u8bbe\u8ba1\u6709\u6bdb\u75c5, \u56e0\u4e3a\u5982\u679c\u4f60\u8bf4\u51fa\u6765, \u522b\u4eba\u5c31\u4f1a\u8ba4\u4e3a\u4f60\u5728\u62b1\u6028, \u90a3\u4f60\u4e0d\u662f\u7ecf\u9a8c\u4e0d\u8db3, \u5c31\u662f\u80fd\u529b\u4e0d\u884c\u3002\u8fd9\u5c31\u50cf\u4f60\u4e0d\u6562\u8bf4\u7687\u5e1d\u6ca1\u7a7f\u8863\u670d, \u5426\u5219\u522b\u4eba\u5c31\u4f1a\u8ba4\u4e3a\u4f60\u5c31\u662f\u767d\u75f4\u6216\u8005\u4e0d\u79f0\u804c\u7684\u4eba! Unix \u7cfb\u7edf\u7684\u540c\u76df\u8005\u548c\u540e\u88d4\u4eec(Linux\uff0cC \u8bed\u8a00, Go \u8bed\u8a00)\uff0c\u4fe8\u7136\u5f62\u6210\u4e86\u8fd9\u6837\u4e00\u79cd\u9738\u6743, \u4ed6\u4eec\u9119\u89c6\u89c9\u5f97\u5b83\u4eec\u96be\u7528, \u8d28\u7591\u5b83\u4eec\u7684\u8bbe\u8ba1\u7684\u4eba\u3002\u4ed6\u4eec\u5632\u7b11\u8fd9\u4e9b\u7528\u6237\u4e3a\u5931\u8d25\u8005, \u5373\u4f7f\u5176\u5b9e\u6709\u4e9b\u201c\u7528\u6237\u201d\u6c34\u5e73\u6bd4 Unix \u7684\u8bbe\u8ba1\u8005\u8fd8\u8981\u9ad8\u3002\u4e45\u800c\u4e45\u4e4b, \u4ed6\u4eec\u5c01\u4f4f\u4e86\u4eba\u4eec\u7684\u5634, \u8ba9\u4eba\u8bef\u4ee5\u4e3a\u96be\u7528\u7684\u4e1c\u897f\u5c31\u662f\u597d\u7684.\n\n## install\n\n```bash\npip install zrep\n```\n\n## \u4f7f\u7528\n\n\u5c3d\u91cf\u8fd8\u662f\u52a0\u4e0a\"\",\u8fd9\u6837\u4f60\u5c31\u5b8c\u5168\u4e0d\u7528\u53bb\u7ba1\u8f6c\u4e49\u548c\u7279\u6b8a\u5b57\u7b26\u7684\u95ee\u9898\u4e86\n\n replace.py \"\u8981\u66ff\u6362\u7684\u5b57\u7b26\u4e32\" \"\u66ff\u6362\u6210\u4ec0\u4e48\"\n\n- \u4e0d\u652f\u6301\u6b63\u5219\n- \u5c0f\u5fc3\u4f7f\u7528, \u4f1a\u66ff\u6362\u6240\u6709\u5b50\u76ee\u5f55\u91cc\u7684\u6587\u4ef6\u7684\n- \u5df2\u7ecf\u505a\u4e86\u9650\u5236, \u4e0d\u4f1a\u53bb\u5f71\u54cd\u5230 .git node_modules \u91cc\u9762\u7684\u5185\u5bb9,\u4e5f\u4e0d\u4f1a\u7834\u574f git node_modules\n- \u8df3\u8fc7\u4e86\u4e8c\u8fdb\u5236\u6587\u4ef6\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A user-friendly recursive string replacement tool",
"version": "0.2.4",
"project_urls": null,
"split_keywords": [
"replace",
" text",
" string",
" recursive",
" sed",
" find-replace"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "cd20b3d1a3e846fc48d55b57ceb2a49dd15e72cbaec54f843dbc6fa628c86ce6",
"md5": "4146a8792db7a2d4580c3e9db142d4cd",
"sha256": "86291035d3d7de233e0f4702c9ba25b80414d5f6ed4c06053e4d572d5bdb55f8"
},
"downloads": -1,
"filename": "zrep-0.2.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4146a8792db7a2d4580c3e9db142d4cd",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.10",
"size": 5888,
"upload_time": "2025-07-18T08:21:22",
"upload_time_iso_8601": "2025-07-18T08:21:22.909903Z",
"url": "https://files.pythonhosted.org/packages/cd/20/b3d1a3e846fc48d55b57ceb2a49dd15e72cbaec54f843dbc6fa628c86ce6/zrep-0.2.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a86433b7a5de8256a9724c53b76d1878cb1773615c00d6a844464afe64dbc0c5",
"md5": "f31bb3728c033f7a078c453a58a12ad7",
"sha256": "8e4297a818ee13e5c92522abf54400efc81d415a2b22f6af9922146cd80892d1"
},
"downloads": -1,
"filename": "zrep-0.2.4.tar.gz",
"has_sig": false,
"md5_digest": "f31bb3728c033f7a078c453a58a12ad7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.10",
"size": 5856,
"upload_time": "2025-07-18T08:21:24",
"upload_time_iso_8601": "2025-07-18T08:21:24.419403Z",
"url": "https://files.pythonhosted.org/packages/a8/64/33b7a5de8256a9724c53b76d1878cb1773615c00d6a844464afe64dbc0c5/zrep-0.2.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-18 08:21:24",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "zrep"
}