如何使用grep打印与模式匹配的字符串?

Que*_*low 2 grep

我想获得与以下模式匹配的字符串列表:

CLASS_NAME:"*"
Run Code Online (Sandbox Code Playgroud)

其中*代表任意数量的字符。

我试过:

grep -o CLASS_NAME:\".*\" script.js
Run Code Online (Sandbox Code Playgroud)

grep -o CLASS_NAME:\"*\" script.js
Run Code Online (Sandbox Code Playgroud)

第一种情况返回匹配字符串之后的整行,而第二种情况在第一个 处终止"。我怎样才能让它只返回匹配的字符串?

mik*_*erv 6

好的,所以我猜你的问题是每行的多引号比你想要的多,因为正则表达式本质上是贪婪的 - 如果可以,它总是会尽可能匹配。

因此,解决方案是确保您只匹配两个双引号,例如:

grep -o 'CLASS_NAME:"[^"]*"' script.js
Run Code Online (Sandbox Code Playgroud)