我尝试使用流来创建脚本来读取和写入specefic行而不实际打开和写入整个文件。
Ex:文本文件大1GB,包含1000多行。 格式为.. ipv4 / ipv6 =当前时间
我目前使用的脚本工作正常,但我在编写一个specefic行时遇到问题,而不必使用数组中的文件放置内容,这会打开整个文件并花费大量时间。
这是我的代码:
origin_id serialn X1 X2 X3 X4 year month day
1 101 A A B null 2017 6 10
2 151 A null B C 2016 7 15
问题我有: 使用int
重写整个文件而不是匹配搜索行后的specefic行请任何帮助或澄清真的有帮助< 3
答案 0 :(得分:-1)
我会使用shell_exec()
作为操作系统索引文件,你的搜索/替换方法会有这么小的开销,你可能永远不会看到影响。
实际的linux
命令是:
find /var/www/directory/file.txt -type f -readable -writable -exec sed -i "s/string_you_are_looking_for/replacement_text/g" {} \;
已添加到shell_exec()
:
shell_exec('find /var/www/directory/file.txt -type f -readable -writable -exec sed -i "s/string_you_are_looking_for/replacement_text/g" {} \;');
... 需要注意的是,我使用/
作为分隔符,如果要替换的字符串中有斜杠,则为&# 39; ll必须逃脱它们.. IE \/
还有其他一些"仅限Linux"项目需要转义,例如$
和@
IE \$
和\@
请注意php
(此外Linux用户www-data
)需要具有写入文件的权限。