在文件中搜索行时使用哪种方法
我有一个包含文件路径名的文件:
/my/path1
/my/path11
/my/path12
/my/path13
文件结构是每行都有单独的路径。我想做的就是在上述文件中搜索是否存在字符串 /my/path1
或任何其他字符串,很多时候
我能想到两种方法。
每次逐行获取文件内容,然后搜索字符串。优点是文件可以是任意大小,并且我不需要担心缓冲区溢出。
将内容加载到缓冲区中并使用缓冲区进行搜索。但由于我无法控制文件大小,因此我应该小心谨慎。
最好的方法是什么?我在unix下工作。我可以使用 C 语言中的任何内置库命令来实现此目的吗?或者我如何在 C 代码中使用 awk
完成相同的任务。
I have a file with path names to files:
/my/path1
/my/path11
/my/path12
/my/path13
The file structure is that it has individual paths in each line. All I want to do is search for the existence of a string /my/path1
or anyother in the above file many times
I could think of 2 methods.
every time get file contents line by line and then search the string. Advantage is that the file can be of anysize and I dont need to worry about buffer overflow.
Load the contents into a buffer and search it using the buffer. But as I dont have control over the file size I should be cautious here.
What is the best approach? I am working in unix. Is there any in-build library commands in C that I can make use of for this purpose? Or how can I accomplish the same task using awk
in C code.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果你使用 stdio,它会为你做缓冲。您可以通过使用函数 setvbuf 来更改其操作来缓冲多个单个线。
getline
可以用来逐行检查。If you use stdio it will do the buffering for you. You can change its operation by using the function setvbuf to buffer more than a single line.
getline
can by used to check line by line.我认为将所有文件加载到内存中并不是一个好主意。我想,使用
fgets
和strcmp
是最好的方法。I think loading all the file in memory is not a good idea. Using
fgets
andstrcmp
is the best way, I guess.