问题标签 [grep]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
11 回答
142275 浏览

linux - 如何在文件中搜索多行模式?

我需要找到所有包含特定字符串模式的文件。想到的第一个解决方案是使用带有xargs grep的find管道:

但是,如果我需要找到跨越多行的模式,我会被卡住,因为 vanilla grep 无法找到多行模式。

0 投票
5 回答
1876 浏览

linux - 当文本行出现在文件中时如何使用 Bash

我想在日志文件中出现特定文本后立即运行命令。我如何在 Bash 中做到这一点?

0 投票
3 回答
1768 浏览

sed - 从多个文件中删除多行文本

我有一堆 java 文件,我想从中删除带有许可证的 javadoc 行 [我在我的代码上更改它]。

我正在寻找的模式是

^\* \* ProjectName .* USA\.$

但跨行匹配

有没有办法 sed [或 Windows/Linux 中常用的编辑器] 可以搜索/替换多行模式?

0 投票
8 回答
38444 浏览

linux - 在文件中递归查找字符串/正则表达式匹配的最佳方法是什么?(UNIX)

我不得不多次这样做,通常是在尝试查找在哪些文件中使用了变量或函数时。

我记得过去使用 xargs 和 grep 来做到这一点,但我想知道是否有更简单的方法。

0 投票
2 回答
2438 浏览

regex - grep:匹配文字“+”

我需要在我的 sql 脚本(即 Oracle 外连接表达式)中找到出现的“(+)”。意识到“+”、“(”和“)”都是特殊的正则表达式字符,我尝试了:

现在这确实返回了“(+)”的出现,但也返回了其他行。(似乎任何在同一行上带有打开和关闭括号的东西。)回想一下,括号仅对扩展的 grep 是特殊的,我试过:

这两个都只返回包含“()”的行。所以假设“+”不能被转义,我尝试了一个老把戏:

这样可行。我使用非正则表达式工具交叉检查了结果。

问题:有人能解释一下“+”字符到底是怎么回事吗?是否有一种不那么笨拙的方式来匹配“(+)”?

(我正在使用 cygwin grep 命令。)

编辑:感谢您的解决方案。-- 现在我看到,根据 Bruno 引用的 GNU grep 手册,“ \+”在基本表达式中使用时赋予“+”其扩展含义,因此匹配一个或多个“(”后跟一个“) ”。在我的文件中总是“()”。

0 投票
6 回答
1847 浏览

windows - svn工作副本的快速递归grepping

我需要在 svn 工作副本中搜索“foo”的所有 cpp/h 文件,完全不包括 svn 的特殊文件夹。GNU grep的确切命令是什么?

0 投票
22 回答
750157 浏览

unix - 使用 grep --exclude/--include 语法不通过某些文件 grep

我正在foo=目录树的文本文件中查找字符串。它在一台普通的 Linux 机器上,我有 bash shell:

目录中还有许多匹配的二进制文件"foo="。由于这些结果不相关并且会减慢搜索速度,因此我希望 grep 跳过搜索这些文件(主要是 JPEG 和 PNG 图像)。我该怎么做?

我知道有--exclude=PATTERNand--include=PATTERN选项,但是模式格式是什么?grep 的手册页说:

grep includegrep include excludegrep exclude和变体上搜索未找到任何相关内容

如果只有在某些文件中有更好的 grepping 方法,我完全赞成;移动有问题的文件不是一种选择。我不能只搜索某些目录(目录结构很乱,到处都是)。此外,我无法安装任何东西,所以我必须使用常用工具(如grep或建议的find)。

0 投票
5 回答
1145 浏览

java - 使 Perl 风格的正则表达式解释器的行为类似于基本或扩展的正则表达式解释器

我正在编写一个工具来帮助学生学习正则表达式。我可能会用Java编写它。

想法是这样的:学生输入正则表达式,该工具显示文本的哪些部分将被正则表达式匹配。很简单。

但我想支持几种不同的正则表达式“口味”,例如:

  • 基本正则表达式(想想:grep)
  • 扩展正则表达式(想想:egrep)
  • Perl 正则表达式的子集,包括字符类 \w、\s 等。
  • sed 风格的正则表达式

Java 有 java.util.Regex 类,但它只支持 Perl 风格的正则表达式,它是基本和扩展 RE 的超集。我认为我需要的是一种方法来获取任何给定的正则表达式并转义不属于给定风味的元字符。然后我可以将它提供给 Regex 对象,它的行为就好像它是为选定的 RE 解释器编写的一样。

例如,给定以下正则表达式:

作为一个基本的正则表达式,它会被解释为:

作为扩展的正则表达式,它将是:

作为 Perl 风格的正则表达式,它与原始表达式相同。

是否有“正则表达式的正则表达式”比我可以通过正则表达式搜索和替换来引用非元字符?我还能做什么?我可以使用其他 Java 类吗?

0 投票
2 回答
2680 浏览

shell - 查找二元组的 Shell 脚本

我正在制作一个 shell 脚本来查找二元组,这在某种程度上是可行的。

唯一的问题是它将前一句的结尾和开头的单词配对。

例如对于两个句子“你好世界”。和“富吧”。我会与 'world. 富'。是否有可能用 grep 或其他东西过滤掉这些?

我知道我可以找到所有包含 grep [.] 句号的二元组,但这也能找到合法的二元组。

0 投票
3 回答
1434 浏览

windows - RegEx in awk and WinGrep

So I'm looking for a pattern like this:

size='0x0'

In a log file, but I'm only interested in large sizes (4 digits or more). The following regex works great in EditPadPro (nice tool BTW)

But the same RegEx does not work in awk - seems like the repetition {4,} is messing it up. Same with WinGrep - any idea from the RegEx gurus? Thanks!