删除记事本++中的第一列
Posted
技术标签:
【中文标题】删除记事本++中的第一列【英文标题】:Delete the first column in Notepad++ 【发布时间】:2014-01-06 18:18:05 【问题描述】:我有这个文件:
206 06:06:00.00 X "Регион -2.00" 00:02:00.00
282 06:50:00.00 X "Регион -1.00" 00:01:00.00
353 07:27:00.00 X "Регион -1.00" 00:01:00.00
435 08:20:00.00 X "Регион -1.00" 00:01:00.00
482 08:39:00.00 X "Регион -1.00" 00:01:00.00
521 09:16:00.00 X "Регион -1.00" 00:01:00.00
667 10:42:00.00 X "Регион -2.00" 00:02:00.00
896 12:54:00.00 X "Регион -1.30" 00:01:30.00
1003 13:57:00.00 X "Регион -1.30" 00:01:30.00
1154 15:29:00.00 X "Регион -2.00" 00:02:00.00
1272 16:23:00.00 X "Регион -1.00" 00:01:00.00
1309 16:57:00.00 X "Регион -1.30" 00:01:30.00
1401 17:49:00.00 X "Регион -2.00" 00:02:00.00
1434 18:07:00.00 X "Регион -2.00" 00:02:00.00
1514 18:43:00.00 X "Регион -2.00" 00:02:00.00
1581 19:19:00.00 X "Регион -1.30" 00:01:30.00
1846 21:52:00.00 X "Регион -1.30" 00:01:30.00
1918 22:26:00.00 X "Регион -1.00" 00:01:00.00
1963 22:46:00.00 X "Регион -1.00" 00:01:00.00
非 4 位数字前有空格,例如第一行 "206"
实际上以 " 206"
开头
我需要去掉第一列,所以我只需要有
06:06:00.00 X "Регион -2.00" 00:02:00.00
第一行,以此类推。
我用 Ctrl+H 和正则表达式尝试了一些东西,但我似乎总是只删除整行。
如果您有其他解决方案而不是 Notepad++,他们也会这样做。我选择 Notepad++ 的原因是这不是一个原始文件,并且它经过了一些格式化(删除所有不包含“Регион -”的行),所以如果所有都可以在一个地方完成会更容易。
【问题讨论】:
【参考方案1】:使用Alt+Shift+导航键,或Alt+Shift+点击进行块选择只是那一栏。然后只需按 Del。
【讨论】:
用宏可以很有趣。【参考方案2】:在 notepad++ 中尝试这个正则表达式替换:
search: ^\s*[0-9]+\s+
replace: nothing
如果要同时删除所有不包含“Регион -”的行,可以将模式更改为:
search: ^(?!.*Регион -).*\r?\n?|^\s*[0-9]+\s+
【讨论】:
【参考方案3】:此答案将删除第一列,并删除不包含您的搜索字符串的行。
先删除第一列
查找内容: ^[ 0-9]+\s+(.*)
替换为:\1
接下来删除不包含所需字符串的行。这有点困难,因为 Notepad++ 使用的正则表达式引擎不允许使用 not 运算符,因此 (?!...) 选项不起作用。相反,您必须分多个步骤完成。
第 1 步 - 为包含您要保留的内容的行添加前缀
查找内容: (.*KeepLinesWithThisString.*)
替换为:ZZZ\1
第 2 步 - 删除不以该前缀开头的行。
我们知道不带前缀的字符串将以数字或空格开头,所以这会将这些行空白
查找内容: ^[ 0-9]+\s+(.*)
替换为:(nothing / leave blank)
第 3 步 - 删除前缀
查找内容: ^ZZZ(.*)
替换为:\1
第 4 步 - 删除空白行
突出显示文档的所有文本。 ctrl+a 或Edit > Select All
TextFX > TextFX Edit > Delete Blank Lines
TextFX > TextFX Edit > Delete Surplus Blank Lines
【讨论】:
【参考方案4】:这里有一个方法:
search what: ^.5
replace with: 'nothing'
【讨论】:
这不适用于第一个,不是吗?它们的初始数字只有三位数。 @DarrenCrabb 这将仅适用于第一个。.5
匹配 5 个任意字符(换行符除外),但 ^
仅匹配输入的最开头(除非启用了多行模式)。
是的,但我认为 5 意味着它必须是五个字符...。第一组行只有四个字符要替换,而不是 5 个。
@DarrenCrabb 空格算作字符
抱歉...我没有发现第一个数字之前的空格。【参考方案5】:
尝试搜索这个:
"^[ 0-9]6"
(不带引号)
并将其替换为:
""
(不带引号)
【讨论】:
【参考方案6】:在 Notepad++ 中删除第一列:
-
选择要删除的列:Alt+Drag
用于剪切:Alt+X
通过这种方式,您可以一次删除任意列或多列。
参考:@987654321@
【讨论】:
【参考方案7】:另一种方法,先修剪前导空格Edit->Blank Operations->Trim Leading Space
。
然后搜索^\d+
,替换为空。然后再次修剪。这可能是更多的步骤,但这是一种方式。
【讨论】:
以上是关于删除记事本++中的第一列的主要内容,如果未能解决你的问题,请参考以下文章