如何删除Notepad ++第一列之后的所有内容?


40

我试图摆脱在记事本++专栏中的所有内容。列模式不是选项。可能吗?

我有的:

70.97.110.40    159 ms          [n/a]                   21              
70.97.117.177   134 ms          [n/a]                   21              
70.97.120.10    75 ms           [n/a]                   21              
70.97.122.105   87 ms           www.portless.net        21              
70.97.122.106   89 ms           www.popovetsky.org      21              
70.97.122.107   95 ms           www.psmythe.net         21              
70.97.122.104   98 ms           wasabi.prostructure.com 21              
70.97.122.108   89 ms           crm.prostructure.com    21              
70.97.122.109   87 ms           internal.prostructure.com21 

我想要的是:

70.97.110.40
70.97.117.177
70.97.120.10
70.97.122.105
70.97.122.106
70.97.122.107
70.97.122.104
70.97.122.108
70.97.122.109

2
列是否用制表符分隔?
Excellll

3
还有一个问题:您要保留的数据是否包含空格?
Excellll 2014年

1
不,我只需要ips
Bob J

20
为什么要在notepad ++中这样做?为什么不能选择列模式?
卡米尔2014年

1
您可以使用列模式将第二列删除到EOL,然后使用“修剪尾随”并保存以摆脱空白。
Casey Kuball 2014年

Answers:


60

如果第一列中的数据从不包含空格,则可以使用正则表达式查找和替换来获取所需的内容。

在正则表达式模式下,搜索:

^([^ ]*).*

并替换为

\1

这是做什么的:

^表示任何匹配都应从行的开头开始。
([^ ]*)是不包含空格的任何表达式。匹配是贪婪的,因此它将匹配所有内容,直到第一个空格(或行尾,以先到者为准)。
.*还有其他一切。

\1指的是括号内的匹配部分。也就是说,整行仅被第一列中的位替换。


5
很高兴知道notepad ++在搜索替换中支持正则表达式!
卡米尔2014年

1
只要数据不包含空格,Regex就会为您完成工作。更简单的是UNIX“剪切”命令,但是在Windows下执行UNIX命令则是整个“另一个问题”。为此,将进行剪切并使用已定义的列定界符或字符计数快速处理大型文件。
2014年

31
这可以更简单地完成:将“。*”(注意前导空格)替换为“”(即什么也没有)以删除第一个空格之后(包括第一个空格)。
Fraxtil 2014年

2
@Fraxtil谢谢。您应该将其发布为答案。你会得到我的支持。
Excellll

@Excellll好吧,完成。
Fraxtil 2014年

99

这是一个更简单的正则表达式,您可以用来实现相同的效果。更换

 .*

(注意领先空间)

一无所有。这将删除第一个空格之后的所有内容。只要您的IP地址不带任何空格前缀(在您的示例中就是这种情况),这将起作用。


8
老兄,正则表达式是纯魔术。我认为我永远不会讨厌它:)
Torben Gundtofte-Bruun 2014年

14
确保该标志具有。匹配换行符已关闭。
2014年

3
如果它可能是制表符而不是空格,则可以使用[ \t].*
Cornstalks 2014年

4
@Cornstalks \s.*较短。\s+.*既然我们正在防御性地编码,甚至可以使用来匹配任意数量的空格。
2014年

1
@ jpmc26,只要您在一句话中不说“ regex”和“ simple”即可:)
Torben Gundtofte-Bruun 2014年

39

如果您使用的是Windows,并且不介意尾随空格(以后可以查找/替换空格),请使用“ 阻止选择”功能:

  1. 按住Alt
  2. 使用鼠标,选择要删除的部分(整个文本块)
  3. 释放Alt钥匙
  4. 删除该文本块
  5. 根据需要重复

那应该是减号“-”吗?
Dracs

抱歉-我在'alt'键周围使用了LT和GT括号。立即修复。
Reed Shilts

10
您可以将其更改为<kdb> Alt </ kbd>并将其格式化为密钥。
Dracs

我一直在使用记事本...。从不知道此功能的存在!1 Bazillion +1 !!!!!

1
行动党说:“列模式不是一种选择”
Peter Mortensen 2014年

11

一个正则表达式是更快,但你可以做一些与宏真正棘手的事情,如果它是一个更复杂的任务。

您可以记录一个宏:

  1. 第1行的游标
  2. 点击开始录制
  3. 按下键首页
  4. 按住Ctrl同时按住键Right arrow(七次)
  5. 按住Shift并按住键End
  6. 按下键 Delete
  7. 按下键 Down arrow
  8. 击中 Stop recording

然后播放:

  1. 点击“多次运行宏”
  2. 由于第一行已完成,因此请输入文档的行号减-1。

9

将光标放在之后70.97.110.40

放置光标

Alt,然后向右和向下拖动光标以选择不需要的部分。

选择

BackspaceDelete

删除


1
一直以来都使用Notepad ++,但我从来不知道它具有像TextPad这样的“块选择模式”。
凯夫

@Kev:它在Visual Studio中的工作方式相同。
彼得·莫滕森

1
OP表示:“无法使用列模式”
Peter Mortensen 2014年

@PeterMortensen-re:VS-地狱,自2002年以来一直在使用它,甚至都不知道!
凯夫

8

这是给定答案的几种替代方法。

如果data为fixed width,则还可以在搜索中使用以下正则表达式

找什么: ^(.{16}).*$

用。。。来代替: \1

如您所愿,如果您要保留的数据确实包含空格,那就太好了。此外,对于固定宽度的数据,您也可以使用Column Mode Editing。这是一个简洁的小功能,可让您在同一列位置中编辑多行数据。请参阅列模式编辑

它提到了箭头键,但是您也可以使用Page Up/Down更快的方法以及EndHome键。鼠标也可以。但是,您可以将其用于临时删除某点之后的数据的方法,尤其是当只有几行时。复制数据也很不错,但是它粘贴的方式有点奇怪,因此您需要先习惯一下。


1
与选择并替换为自身相比,更好的方法是使用诸如:(?<= ^。{13})。*的后向标记,然后不进行任何替换。这将在前13个字符之后选择任何内容。
克里斯·默里

4

类似于enthdegree:

  1. 将光标放在第16列
  2. Shift+ Alt+Page Down
  3. Shift+ Alt+End
  4. Delete

如果文件末尾有空白行,只需Up Arrow在#3之前按。

它不是完美的,但是很方便。


4
  1. ALT在将鼠标用作套索的同时按。
  2. 选择所有要删除的
  3. DELETE

假设第一列与IP地址一样排列整齐,那么这是最快的方法。
bgStack15

行动党说:“列模式不是一种选择”
Peter Mortensen

3

这是一种视觉方式:

  • 将光标放在IP地址的末尾。
  • Alt+ Shift+Pg Down
  • Alt+ Shift+Right
  • Delete

这不是“基于列”。它只能工作,因为您的IP地址全部对齐。


1
您所说的“这不是基于列的”是什么意思?Alt + Shift +箭头切换到“列模式”。
怀特先生

它不将制表符描述作为一列。它将它们分成多个空间,以便选择中的每一行在选择起点的边缘之外具有相同的字符数。
2014年


0

在记事本++第一栏中删除所有内容:

  1. 选择第二列:Alt+拖动
  2. 要选择其余列:只需按 Right Arrow
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.