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

我有一个900mb 的日志文件,我可以打开 SublimText 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的行

116979 次浏览

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

单击“查找”> “替换”。

确保按下了“正则表达式”按钮。

对于“查找内容”字段,请输入:

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

“替换为”字段保持为空。

全部替换

我不能让正则表达式工作,所以我使用 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在所有情况下进入多光标模式(Mac OS X 上的 Ctrl + CMD + G)
  3. Ctrl + L[见注释](Mac 上的 Cmd + L)
  4. 将选定内容复制粘贴到另一个缓冲区
  5. Del

对于那些不想写正则表达式的人,你可以选择搜索字符串,点击 ctrl+cmd+g或者从菜单中选择“快速查找全部”,这样你就可以选择每一个匹配的字符串; 从这里,Home会将每一个选择光标移动到行的开始,shift+End会选择每一个匹配的行,然后 del, del会删除所有的行。

多光标编辑是有趣的!

上面建议的两个 regex 代码在我的案例中都不起作用,但是这个代码起作用了:

.*(text in question).*

下面是我对 windows 用户的调查结果:

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

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

这对我很有效:

  1. 复制要删除的行中的最后一个单词
  2. 找到一切
  3. 按删除键删除整行

上面的答案是正确的方法,但是如果你想用一个字符串去掉一行,那么, Find-> Replace-> 将 ^.*[a-zA-Z]+.*\n放在 Find 部分,并保持替换为空白。点击替换所有按钮,这将删除所有的行,甚至一个单一的字符串在其中。

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

但是。.你有没有尝试使用 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

Find-> Find all (这将标记包含关键字的行) 然后转到编辑-> 行-> 删除行

一个简单的方法是:

  • 1开放的崇高文本
  • 2 Find = > Replace (Ctrl + H)
  • 3在查找写所需的文本
  • 4单击“查找全部”
  • 按 ctrl + shift + K 删除搜索所在的所有行

这是删除包含某些文本的某些行的快速解决方案