删除 sublime text 上 WORD 之前的所有行

Deleting all the lines before a WORD on sublime text

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

第45280525行有一个词johnd,我想把它前面的所有行都删掉

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

请注意,Notepad++ 无法使用此文件。

您可以使用 menu > Goto > Goto Line...

转到该行

或按Ctrl+G

您可能正在寻找 Mark 功能:

  • Ctrl+G 去你想 select 的最后一行,按编号。
  • Edit > Mark > Set Mark 设置您的 select 离子末端标记。
  • Ctrl+G(或Ctrl+首页) 转到你想要 select.
  • 的第一行
  • Edit > Mark > Delete to Mark

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

有点乱七八糟,只有当至少有一种括号没有在文本中使用时它才有效。

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

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

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

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

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

  1. 将光标放在要保留的第一行的开头(例如使用 Ctrl+F
  2. Ctrl+Shift+Home 到 select 所有文字最多文件开头
  3. ⌫删除