@
xufangLZ 的需求是: 1. 监控文件增加的每一行; 2. 简单的字符串替换; 3. 最好是命令行
需求里面监控文件增加才是难点,字符串替换怎么来都不是问题,所以楼下的建议都是 tail -f 作监控,管道来处理字符串替换,你这假装很有经验,不给出有帮助的回答并强行与所有人撕逼是为哪般?
另外你答的几个看起来很厉害,实际没任何用的技术点,我可以给你分析下:
1. awk 比 Perl 快, LZ 没用对, ChinaUnix 上很多人可以给出更快的方案
事实上在文本简单处理上,各语言在效率上没有太大差异,处理速度完全取决于 IO 操作。 Linux 是有文件缓存的, LZ 之所以发现 Perl 比 awk 快,很有可能是 awk 后文件被缓存了一部分,之后 Perl IO 操作变快了。不看脚本内容,直接断言 LZ 没用对,而且不说哪里不对,说明你压根没意识到文件缓存的问题,或者说不知道有这个东西。
2. 脚本写得再高效,只能单核运行,应该用 golang , golang 天然支持多核
我以为 LZ 需求的效率取决于 IO 性能是有目共睹的,多核处理并不能加快 IO 处理速度,@5thcat 已经说明了。你回复说`你能在等 IO 的时候,把 CPU 也用上吗?` 我反问你一句,你把 CPU 都用上了,就不用等 IO 吗?
3. golang 的正则引擎秒杀很多脚本语言,打了很多语言的脸
那又如何? LZ 关心的是遍历,标题说明了,回复中也强调了。正则引擎快有啥用?另外真计较性能的话,你不觉得应该用普通的字符串查找、替换函数吗?锤子是好使,可这是螺丝啊