![如何编写 shell 脚本从文件中的某个位置进行搜索,而不是再次从文件开头开始](https://linux22.com/image/684605/%E5%A6%82%E4%BD%95%E7%BC%96%E5%86%99%20shell%20%E8%84%9A%E6%9C%AC%E4%BB%8E%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E6%9F%90%E4%B8%AA%E4%BD%8D%E7%BD%AE%E8%BF%9B%E8%A1%8C%E6%90%9C%E7%B4%A2%EF%BC%8C%E8%80%8C%E4%B8%8D%E6%98%AF%E5%86%8D%E6%AC%A1%E4%BB%8E%E6%96%87%E4%BB%B6%E5%BC%80%E5%A4%B4%E5%BC%80%E5%A7%8B.png)
我正在尝试编写一个 shell 脚本,使用 for 循环在一个包含数百万行的大文件中查找重复单词后存储的值。找到重复单词后,我如何让脚本在文件中的当前行后开始搜索,这样当循环迭代时,它就不会从文件开头开始搜索。
简单地说如何在文件中找到当前行以及如何在循环重新迭代时从该行开始搜索,而不是从头开始搜索。
我可以运行多少个并行 crone,是否有任何限制,或者我们只需要根据我们的 CPU 和 RAM 利用率来运行。
答案1
我使用它在日志文件中查找程序是否启动成功。
要查找当前文件大小,您可以使用:
current_pos=$(stat -c "%s" file)
然后使用输出
tail -c +$current_pos file
从记住的位置开始搜索。
但是,当您读取文件大小时(以及当您进行搜索时),最后一行可能不完整。这取决于写入文件的程序。