Sublime - 删除包含特定值的所有行

时间:2014-08-11 22:35:34

标签: sublimetext sublimetext3

我有一个900mb日志文件,我可以在SublimeText 3中打开。这个文件是膨胀的,行类似于以下内容。

10/08/2014 23:45:31:828,Information,,,,ExportManager: ,No records to send and/or not connected

如何过滤掉包含No records to send and/or not connected

的所有行

9 个答案:

答案 0 :(得分:190)

您可以进行正则表达式搜索和替换:

点击查找>取代

确保按下正则表达式按钮。

对于Find What字段,请输入:

^.*No records to send and/or not connected.*\n

将“替换为”字段留空。

点击全部替换

答案 1 :(得分:51)

对于那些不想写正则表达式的人 - 您只需选择搜索字符串,点击ctrl+cmd+g或从菜单中选择“快速查找全部”,这将为您提供每个匹配字符串的选择;从那里Home将每个选择光标移动到行的开头,shift+End将选择每个匹配的行,del, del将删除所有匹配的行。

多光标编辑很有趣!

答案 2 :(得分:44)

我无法使正则表达式工作,所以我从这个答案中使用了Alt-F3方法:

https://superuser.com/questions/452189/how-can-i-filter-a-file-for-lines-containing-a-string-in-sublime-text-2/598999#598999

  1. 选择感兴趣的字符串
  2. 点击 Alt + F3 进入所有事件的多光标模式( Ctrl + CMD + Mac OS X上的 G
  3. 点击 Ctrl + L [查看评论](Mac上的 Cmd + L
  4. 将选择粘贴选择到另一个缓冲区
  5. 德尔

答案 3 :(得分:20)

上面提到的正则表达式代码都不适用于我的情况,但这确实有效:

.*(text in question).*

答案 4 :(得分:17)

这是我为Windows用户找到的:

  1. 选择字符串(要删除包含此字符串的每一行)。
  2. 按ALT + F3。
  3. 按Ctrl + L。
  4. 按删除。

答案 5 :(得分:0)

我遇到了编辑站点地图的类似问题

这对我有用:

  1. 复制要删除的行中的最后一个单词
  2. 查找全部
  3. 按删除删除整行

答案 6 :(得分:0)

以上答案是正确的方法,但是如果您想摆脱仅包含一个字符串的行,那么可以这样做, 查找->替换->将^.*[a-zA-Z]+.*\n放置在查找部分中,并保持替换为空白。点击全部替换按钮,这将删除其中甚至只有一个字符串的所有行。

答案 7 :(得分:0)

我喜欢手动版的解决方案,非常好。

但是...您是否尝试过使用 catgrep -v 来过滤掉这些行并重定向到另一个文件?也许比学习正则表达式更好..(我个人总是从正则表达式开始,以自己编辑文件结束)。

在 Windows 中,您使用 findstr /v

所以你会这样做:

# in bash
cat my.log | grep -v "No records to send and/or not connected" > new.log

# in cmd
cat my.log | findstr /v "No records to send and/or not connected" > new.log

答案 8 :(得分:0)

Find -> Find all(这将标记具有关键字的行) 然后去编辑->行->删除行