【问题标题】:Deleting all the lines before a WORD on sublime text删除崇高文本上 WORD 之前的所有行
【发布时间】:2017-12-21 00:05:29
【问题描述】:

我有一个包含 +1M 行的大文本文件

还有一个字johnd在第45280525行,我想把它前面的所有行都删掉。

如何使用 Sublime Text 做到这一点?

请注意,Notepad++ 不适用于此文件。

【问题讨论】:

    标签: file text sublimetext3 sublimetext


    【解决方案1】:

    你可以使用menu > Goto > Goto Line...去排队

    或按Ctrl+G

    您可能正在寻找Mark 功能:

    • Ctrl+G 按数字转到您要选择的最后一行。
    • Edit > Mark > Set Mark 设置您的选择结束标记。
    • Ctrl+G(或Ctrl+Home)转到您要选择的第一行。李>
    • Edit > Mark > Delete to Mark

    否则,您可以将打开文件的代码编写为文本...删除您需要的行,保存并...关闭。

    【讨论】:

    • 我不会去行我说我想删除单词“johnd”之前的所有行
    • 根据我的经验,您可以在“设置标记”之后立即执行“删除到标记”
    【解决方案2】:

    有点小技巧,只有在文本中至少有一种类型的括号未使用时才有效。

    1. 在文件开头添加一个左括号(([{)。
    2. Ctrl+F,搜索你的单词(“johnd”)
    3. 在单词前创建一个右括号,对应于左括号()]}
    4. Shift+Ctrl+M,在选择文本 (Shift) 时跳转到对立的括号 (Ctrl+M)。
    5. 删除选定的文本和括号。

    可能有更好的方法来做到这一点,但这是我能想到的解决方案。

    【讨论】:

      【解决方案3】:

      如果您的文件太大而无法在 Sublime Text 中编辑,您可以在 Linux 命令行中执行以下操作:

      sed -ne '/johnd/,$p' myfile.txt > edited.txt
      mv edited.txt myfile.txt
      

      打印从匹配的johnd 到文件末尾的所有行。输出被捕获到一个新文件中,然后重命名以替换原始文件。

      【讨论】:

        【解决方案4】:
        1. 将光标放在要保留的第一行的开头(例如,使用 Ctrl+F
        2. Ctrl+Shift+Home 选择文件开头的所有文本
        3. ⌫ 删除

        【讨论】:

        • 在我的(慢速)PC 上,1200 万行长度约为 40 的行大约需要 12 秒
        猜你喜欢
        • 2016-06-05
        • 1970-01-01
        • 2015-04-21
        • 2012-12-13
        • 1970-01-01
        • 2012-11-21
        • 2020-01-27
        • 1970-01-01
        • 2018-11-20
        相关资源
        最近更新 更多