65

Notepad ++中有没有办法删除每隔一行或第n行?我有大量数据,我需要减小大小。

数据本身并不重要,在 10,000 个项目的列表中,我只需要选择 5,000 个

4

7 回答 7

129

我不确定 Notepad++ 是不是最好的工具,但是使用正则表达式的力量,我们应该能够做到。

打开替换菜单,填写([^\n]*\n)[^\n]*\n“查找内容”框和$1“替换为”框。然后选择正则表达式作为搜索模式,点击全部替换,每隔一行删除一次。

如果您想做类似的事情,您可以构建类似的正则表达式。例如,如果您用n - 1(([^\n]*\n){a})[^\n]*\n替换,将替换每第 n 行,并让您保留偶数行而不是奇数行。a[^\n]*\n([^\n]*\n)

于 2013-07-19T01:29:37.827 回答
30

您可以尝试使用宏。

  1. 开始录制宏
  2. 按下n次
  3. 按 Shift+End
  4. 按两次删除
  5. 停止录制宏
  6. 运行宏直到文件结束
于 2013-09-04T11:09:47.933 回答
8

我自己也遇到过这个问题。对我有用的,也使用查找/替换功能,是:

  1. Ctrl F 并转到替换
  2. 在搜索模式下,选择“扩展(\n、\r、\t ..)”
  3. 查找内容:\n\n
  4. 替换为:\n
  5. 全部替换
于 2016-03-02T21:27:35.600 回答
6

如果您使用的是 unix 风格的平台,我认为您可以使用 awk 执行此操作:

awk 'NR % 2 == 0' file > outfile

NR 是行号,所以这只会说“如果该行可被 2 整除,请将其粘贴到 newfile 中”。

如果您在 Windows 上,我认为这里的答案会起作用:

批处理文件以保留十行之一

于 2013-07-18T22:55:26.980 回答
4

反映这个问题,这是大多数操作系统使用“查找和替换”的解决方案:

  • 将光标设置在第一行
  • 打开替换对话框(Ctrl + H)
  • 选择“正则表达式”
  • 找什么:(.+\R).+(\R|$)
  • 用。。。来代替:$1
  • 按“全部替换”

笔记:

  • 没有“环绕”
  • \R 是“行尾”的 Unix/Mac/Windows 正则表达式
于 2021-03-05T08:10:42.047 回答
0

我不认为 N​​otepad++ 中有一个功能会自动删除每隔一行(或每隔 n 行),但如果你编写了一个简短的转换程序,它只需要几分钟。

伪代码看起来像这样:

1. Create a StreamReader and StreamWriter (make sure you are not trying to read from
   and write to the same file)
2. While (StreamReader is reading lines) increment i. You could mod it by whatever 
   number n you wanted in order to delete certain lines. Then have a conditional clause
   that would write out if i%n == 0 or whatever you specify.
3. Close the program.

这并不能完全回答你的问题,但我希望它有所帮助。

于 2013-07-18T22:53:03.527 回答
0

另一种方式,您可以使用cc.dl 5.5ConyEdit(一个插件)的命令行删除每组的第五行,每组五行。

于 2018-07-18T02:47:38.887 回答