如何grep' *'在unix korn shell中

时间:2016-06-30 22:13:58

标签: shell unix grep pattern-matching

我试图使用' *'在模式文件中查找某些内容。但是没有用,不知道怎么做?

这就是我想要做的事情:

grep "files*.txt" $myTestFile

没有返回任何东西,它假设" *"应该是全部。

2 个答案:

答案 0 :(得分:1)

默认情况下,// Add documents client.add(docs,function(err,obj){ if(err){ console.log(err); }else{ console.log(obj); } }); 不支持扩展常规快递,但 grep -E egrep 支持。

  

egrep" files。* \ .txt" $ myTestFile

  

grep -E" files。* \ .txt" $ myTestFile

此外,还提供了三个变体计划grepegrepfgreprgrepegrep相同。 grep -Efgrep相同。 grep -Frgrep相同。直接        不推荐使用grep -regrep作为调用,但提供这些调用是为了允许依赖它们的历史应用程序不加修改地运行。

fgrep

答案 1 :(得分:1)

如果您只想匹配完全字符串 files*.txt,那就是:

# match exactly "files*.txt"
grep -e "files[*][.]txt" "$myTestFile"

...或者,更简单地使用fgrep来匹配给定的确切字符串:

# match exactly "files*.txt"
fgrep -e 'files*.txt' "$myTestFile"

[*]定义了一个只包含单个字符的字符类 - * - 包含,因此只匹配那个字符。基于反斜杠的转义也是可能的,但在不同的上下文中可能有不同的含义,因此不太可靠。

如果您想匹配包含files和更晚.txt的任何行,那么:

# match any line containing "files" and later ".txt"
grep -e "files.*[.]txt" "$myTestFile"

.*匹配零个或多个字符,因此是与glob-pattern *等效的正则表达式。同样,在glob模式.只匹配自身时,正则表达式.可以匹配任何字符,因此.中的.txt需要进行转义,如{ {1}},以防止它与其他任何内容匹配。