pythonic查找和替换测试

fxr的Python项目详细描述


#fxr

[![特拉维斯](https://travis-ci.org/pmav99/fxr.svg?branch=master)(https://travis ci.org/pmav99/fxr)
[![工作服](https://coveralls.io/repos/pmav99/fxr/badge.svg?branch=master&service=github)(https://coveralls.io/r/pmav99/fxr)

`fxr`(发音为“fixer”)是一个cli实用程序,可用于在文本文件中查找匹配的模式
和:

*追加/前置行
*删除匹配行之前/之后的行。
*替换文本

您可以将其视为“ag”、“xargs”和“sed”的替代品(使用更好的api!)

**警告**:*“`fxr”当前没有干运行模式,默认情况下会就地更改文件。如果需要
备份,则需要显式启用它们!






>你所需要的就是python 2.7/3.3+和一个搜索程序,比如
[`ag`](https://github.com/ggreeer/the the the_si银搜索者):

```````
pip install-u fxr
pip install--user-u fxr `;这将在~/.local/
``


最新版本是``2.7/3.3.3+/3.3+`和一个搜索程序(https://github www.github com/ggreer.com/ggreeer/0.2.5`:

fxr有三种操作模式:fxr add`
>
>>
*`fxr add`
*`fxr delete`
*`fxr replace`




fxr add`fxr add`

>
>在fxr add`fxr add`fxr add`fxr add`




`fxr add<;pattern>;lt;add`fxr text>;是的#将文本追加到与模式匹配的行中
fxr add--prepend<;pattern>;<;added_text>;prepend文本追加到与模式匹配的行中
````


`fxr delete`

在此模式下,搜索与模式匹配的行,您可以:

1。删除匹配行前面的n行
2。删除匹配行后面的m行
3。删除匹配行本身
4。或者以上的任何组合!

例如,要在行匹配模式之前删除3行,则在其之后删除2行,并且匹配行
本身:

```
fxr delete--在3之前--在2之后--包括“行”<;pattern>;
````

这或多或少相当于:

```
ag<;pattern>;-l xargs sed-i's/<;pattern>;/<;replacement>;/g'
````


```

如果没有提供,则
更改正在进行。
*`--literal`:设置此标志时,模式将不会被分析为正则表达式。
*`--raise if no change`:设置此标志时,如果文件中没有
更改,则会引发异常。
*`--single<;filename>;`:指定此参数时,fxr将只尝试对指定的文件执行其魔法。也就是说,不使用“ag”。
*`--search“prog”:如果不喜欢“ag”,可以指定备用程序(例如“rg”)。
*`--search“args”:可以为搜索程序指定其他参数。


` sed'regex引擎非常有限。例如,在您需要look aheads和其他高级功能之前,您并不真正需要它们的支持!
([链接](https://www.gnu.org/software/sed/manual/html_node/regular expressions.html))。

2.用于组合“ag”、“sed”和“xargs”的api充其量是笨拙的(例如,在“ag”和“sed”中重复“pattern”>;`both
)。例如:
`ag<;pattern>;-l xargs sed-i's/<;pattern>;/<;replacement>;/g'`



由于使用“ag”搜索匹配的文件
,因此性能应该不算太糟,但请记住,主要用例是对源代码和配置文件进行更改,而不是多GB CSV文件/数据库转储。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何加载。java文件到编译器?   java写入文件和I/O   java日历返回错误的当前日期安卓   if语句if变量等于1(java)   java很难让Joda有时间使用我的bukkit插件   json如何创建基于java的应用程序,该应用程序将从网站获取输入   java如何在多页中打印大型JPanel   java my spinner在添加从firebase数据库中选择的多个值时被覆盖   java用Play框架覆盖HTTP方法   试图获取所有用户时,java错误请求400。Dto和表格   java支持bean加载图像后javascript自动调用JS函数   java在MTOM的@StreamingAttachment(Metro)中,Parsely的意思是什么   具有可抢占线程队列的多线程java执行器   Java Opencv connectedComponentsWithStats   java如何向数组中添加2D数组的数目   eclipse为什么我的Java Zork克隆不能正确循环?   java在哪里放置定制的第二个web。xml   java如何更改最近应用列表中显示的快照?   java Browser#getText()返回空字符串