aho corasick字符串替换实用程序
fsed的Python项目详细描述
版权所有(c)2015 Will Roberts<;wildwilhelm@gmail.com>;
根据麻省理工学院的许可证授权(参见文件LICENSE.rst获取 详细信息)。
在文件上搜索和替换,并在固定字符串上匹配。
fsed是一个专门为您必须 执行many字符串搜索并用固定字符串替换操作 (即,fsed不做正则表达式)。通过做所有的 同时搜索和替换所有模式,fsed 可以比在 时间(就像sed或perl中的一行代码)。
为了进行搜索,fsed使用Aho-Corasick algorithm, 这是一种非常聪明的方法,可以同时匹配多个模式 时间,并用于实现原始的fgrepunix实用程序 (现在作为grep -F访问)。这个算法能够找到 相互重叠的匹配项,在这些情况下,fsed必须 选择要重写的匹配项。fsed采用的策略是 贪婪,总是先重写最短、最左边的匹配。
为了说明这一点,想象一下我们想重写的情况 a带有b,aa带有c,以及aaa带有d。什么 当我们看到输入字符串aaa时应该这样做吗?我们应该生产 bbb、bc、cb或d?fsed在此生成bbb。 案例。
用法
fsed [OPTIONS] PATTERN_FILE [INPUT_FILE [INPUT_FILE2 ...]]
如果指定了一个或多个INPUT_FILEs,则fsed读取并 将这些连接为其输入;否则,fsed将读取 标准输入。
选项:
- --pattern-format=FMT
- 将fmt设置为tsv或sed(默认为sed),以指定 PATTERN_FILE的格式。
- -o/--output=OUTFILE
- 指定程序输出应写入OUTFILE。 如果不使用此选项,fsed将写入标准输出。
- -w/--words
- 使fsed只在单词边界上匹配;此标志指示 fsed将\b附加到每个 模式在PATTERN_FILE。
- --by-line/--across-lines
- 设置fsed是否应逐行处理输入 或逐个字符;默认值为--across-lines。
- --slow
- 表示fsed应该非常努力地始终找到 最长的输入匹配;这非常慢,并且 --by-line打开。
- -q
- 安静操作,不发出警告。
- -v/--verbose
- 打开调试输出。
注意:使用PyPy:
pypy -m fsed.fsed [OPTIONS] PATTERN_FILE [INPUT_FILE [INPUT_FILE2 ...]]
模式文件
PATTERN_FILE包含要在其中搜索和替换的模式列表 输入;每种模式都列在一行。fsed 支持两种指定模式的格式。默认值,sed, 按sed实用程序的方式指定字符串及其替换 是否:
s/SEARCH/REPLACE/
s字符后面的字符是模式分隔符, 可以是任何字符(不必是正斜杠)。
另一种格式tsv使用^{tt56}指定模式$ 字符作为分隔符:
SEARCH<TAB>REPLACE
在这种格式中,每行只能有一个<TAB>字符。
模式可以包含转义字符:
- \\
- 反斜杠(\)
- \a
- ascii铃(bel)
- \b 单词边界
- \f
- ascii格式馈送(ff)
- \n
- ASCII换行符(lf)
- \r
- 回车(CR)
- \t
- 水平选项卡(选项卡)
- \v
- ascii垂直制表符(vt)