Board logo

标题: [文本处理] 一个功能强大的字符替换工具:fr [打印本页]

作者: sysplay    时间: 2010-2-6 11:43     标题: 一个功能强大的字符替换工具:fr

在网上看到了一个强大的字符替换工具,大家可以去白杨的原创免费作品http://baiy.cn/上看一看。
  1. fr - 在文件中查找并替换匹配的字符串
  2. ≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
  3. 功能简介
  4. ■ 支持一次性指定多个文件通配符和文件列表。
  5. ■ 支持管道模式,与其它命令协同工作;支持半管道模式,从文件中获取输入,但将结果写到标准输出。
  6. ■ 支持包含子目录。
  7. ■ 支持普通匹配、正则匹配、可忽略大小写、可跨行匹配。替换时可以使用正则的子表达式。
  8. ■ 支持高级正则表达式(ARE)。
  9. ■ 同时支持 posix 标准的扩展正则表达式及 perl 风格的正则匹配。
  10. ■ 可以格式化替换内容为全大写或全小写,便于在批处理中对环境变量和命令行参数做大小写一致化处理。
  11. ■ 支持 DOS(Windows)、Macintosh 和 unix 风格的换行符,可选择自动识别(默认)或手动指定。
  12. ■ 统计功能,列出每个文件中的替换次数、总替换次数等。
  13. ■ 支持Win32和纯DOS环境(纯DOS环境中需要 HX DOS Extender 支持)。
复制代码
下载:
http://pan.baidu.com/share/link?shareid=4061880705&uk=1124163200
作者: BBCC    时间: 2010-2-6 12:15

咋白杨大大的东西也被搬过来啦~~
作者: a_wind    时间: 2010-11-9 20:37

当前非常需要,很感谢楼主和原创人!
作者: dali618    时间: 2011-4-20 08:29

这个我收下了,非常感谢
作者: CNP840718519    时间: 2011-4-22 08:42

谢谢楼主分享
作者: lwtop97    时间: 2011-5-23 12:53     标题: 相比他连说拜拜的 想法都没了 哈哈

相比他连说拜拜的 想法都没了 哈哈








浪美
mbox音乐盒
作者: xslxslxsl    时间: 2011-6-30 11:05

谢谢分享,又要学习这个 了
作者: caruko    时间: 2011-7-7 17:23

好像还不错,虽然也很强大,不过 SED 之类的工具已经可以做到了。
作者: xslxslxsl    时间: 2011-8-17 22:42

这个真的很不错哦,我用过。
作者: ttenma    时间: 2011-9-16 21:14

444(?=555) (匹配444,且後面必須為555)
444555444
444666444

(?<=333)444 (匹配444,且前面必須為333)
444333444
444222444

正則表達式是不是不標準?第二個不支持。

grep/findsrt之類都是返回整行結果。我整個文件就一行,完全沒意義啊。
有沒有其他的搜索程序?支持正則表達式的。
作者: Batcher    时间: 2011-9-16 23:14

回复 11# ttenma


grep有 -o 选项
作者: xslxslxsl    时间: 2011-9-27 09:47

的确很强大,但是我还是用不好,望高手写个教程耐心指导一二。
作者: cfc365    时间: 2011-9-27 13:31

学习下   在来问问
作者: leeonix    时间: 2011-10-19 16:32

sed,awk,perl都可以做到,为什么还有这么个东西呢?
作者: Batcher    时间: 2011-10-19 17:16

回复 15# leeonix


sed,awk,都可以做到,为什么还有perl这么个东西呢?
作者: leeonix    时间: 2011-10-19 17:34

回复 16# Batcher
perl的单行脚本只比awk强不比awk弱。而且perl可以做到sed tr grep的集合功能。而不需要直接用管道。Eric Raymond在Unix编程艺术里介绍awk的时候,建议可以把awk扔掉了。
作者: Batcher    时间: 2011-10-19 20:45

回复 17# leeonix


这就对了嘛
很多时候不是说有了某个东西可以完成某些事情就不去发明另外一些东西
也许fr的作者在开发这个系列的命令行工具的时候也有类似的想法呢
作者: leeonix    时间: 2011-10-19 21:08

类似?那你太小瞧Larry Wall为了发明perl的“类似”想法了。perl的最初定位是输出被格式化化好的报表,但awk做不到,他才做了perl,然后想想把正则表达式加进去也不错。就成了perl。而我看这个fr,只有重复grep的想法。最多就是自己的一个作业性质的作品。
作者: Batcher    时间: 2011-10-19 21:20

回复 19# leeonix


哦,是吗,以前看Perl教程的时候,书上说Larry也是awk高手呢,只是觉得处理报表不够方便(而不是做不到)才搞了Perl。
作者: leeonix    时间: 2011-10-19 21:40

我说的做不到,是针对"输出被格式化化好的报表"这句的。有关awk的问题,可以参照上面说的Unix编程艺术。
作者: leeonix    时间: 2011-10-19 22:11

我还是没记错,以下摘自我手里的《Programming Perl》,也就是骆驼书。
“然后大经理要求他(Larry)生成报告,Larry的第一个反应是‘用awk’,糟糕的是,那时候的awk无法做到以文件里的信息为基础打开和关闭多个文件,Larry不想编写一个特殊目的工具,结果一种新的语言产生了。”
作者: QIAOXINGXING    时间: 2011-10-19 22:34

这也行,多谢楼主分享
作者: Batcher    时间: 2011-10-20 00:09

回复 22# leeonix


原来如此。看来那时候awk的功能还不像现在这样强大。
也正好说明了一点,很多东西的出现,背后总有一些有趣的小故事。
也许fr的作者也是觉得当时那些命令行工具在某些方面不尽如人意吧。
我用fr系列比较少,了解的不是很深,但是看到过有人用它替换原文件、跨行正则等,还是挺有意思的。
作者: leeonix    时间: 2011-10-20 09:41

我没有感觉到那么多也许,但说明一点,是知识传播的封闭性,而不是不为人知的小故事。
很多现成的工具,并不为各种小众群体所知。宁愿自己写,也不用别人的。书籍上有个著名的词语形容叫:重复发明轮子。




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2