【问题标题】:MacOS complete search in huge text file and output results (find solution to TextPipe)MacOS 在巨大的文本文件中完成搜索并输出结果(找到 TextPipe 的解决方案)
【发布时间】:2019-10-21 18:15:36
【问题描述】:

我有一个文本文件 ar. 50 GB 大小。 我曾经通过 TextPipe 处理它,但 atm 只有 mac 可用并且没有 TextPipe 访问权限。 是否可以在此文件中启动正则表达式搜索,并将每个匹配行保存到其他文件的良好结果? 我在考虑 vim 编辑器,但对在哪里搜索没有足够的知识。 将不胜感激任何建议。

作为一个例子,假设我的 initial.txt 文件中有以下代码,并且我想将带有“Lorem”的行保存在 processes.txt 中。

Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad minim veniam, quis nostrud 练习 ullamco laboris nisi ut aliquip ex ea commodo 结果。 Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。 Exceptioneur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est labourum。 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad minim veniam, quis nostrud 练习 ullamco laboris nisi ut aliquip ex ea commodo 结果。 Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。 Exceptioneur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est labourum。 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad minim veniam, quis nostrud 练习 ullamco laboris nisi ut aliquip ex ea commodo 结果。 Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。 Exceptioneur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est labourum。

【问题讨论】:

    标签: macos search vim terminal


    【解决方案1】:

    对于固定字符串使用fgrep:

    fgrep Lorem initial.txt > processed.txt
    

    对于正则表达式,请使用grepegrep(它们的正则表达式语法略有不同)。

    【讨论】:

    • fgrep 只是grep -Fegrep 只是grep -E
    • 仅当这些是来自 GNU 实用程序的 grep 时。其他实现可能有不同的选择。我不知道 MacOS 上默认安装了哪些 greps。当然,我建议安装各种 GNU 实用程序——GNU awk、GNU find、GNU grep、GNU sed 等等……
    • 不,-F-E 都是 specified by POSIX。另一方面,fgrepegrep 不是(同样,它们的使用已被弃用)。
    【解决方案2】:

    Vim 与其他文本处理工具“在基因上”相关,例如 sedgrep。而且它还具有嵌入式复杂的脚本语言,因此它完全能够进行批量文本处理。

    但是 Vim 是一个交互式文本编辑器,所以仅仅用它来代替 awkgrep 感觉有点不对劲。但是,如果您要学习并使用它进行编辑和脚本编写,它既优雅又强大。

    要体验一下 Vim,您可以按如下方式解决您的问题(在普通模式下键入 ':' 会自动切换到命令模式):

    :e initial.txt
    :g/Lorem/.w! >>processed.txt
    

    我在考虑 vim 编辑器,但对在哪里搜索没有足够的知识。希望有任何建议。

    Vim 的主要问题是你必须从头开始,即学习如何打开、编辑和保存文件,甚至如何正确退出应用程序。所以你应该下载并安装它并运行vimtutor。接下来,您应该习惯 Vim 的嵌入式帮助系统 (:h user-manual),这是迄今为止 Vim 最好的功能。

    如果您要查找更多书籍和教程,可以从here 开始。恕我直言,Steve Oualline 的“Vi IMproved”仍然是最适合初学者的; Drew Neil 的“Practical Vim”强烈推荐给高级 vimer。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-12
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      相关资源
      最近更新 更多