如何FGREP 2破折号' - '?

时间:2010-04-29 20:35:06

标签: linux grep

fgrep -ircl --include=*.{sql} "[--]" *似乎没有做到这一点。请帮忙......

感谢回复人员。我正在尝试用'#'替换' - ',并且我很难过。我在这里创建了一个new question。如果你能提供帮助,那就太棒了。

5 个答案:

答案 0 :(得分:4)

它看起来像是与(单个)-字符匹配的正则表达式字符类。字符串--通常用于表示“不再有参数”,所以也许你应该尝试

fgrep -ircl --include=*.{sql} -- -- *

即“参数结束”,后跟您要搜索的实际字符串。

答案 1 :(得分:1)

您需要在方括号内转义短划线字符,这些字符用于表示字符类(例如[a-z])内的范围。但是,在这种情况下,您不需要使用方括号来匹配文字字符串。

最后,--是一个导致argument parsing停止的特殊序列。要包含文字--作为参数,您必须显式停止参数解析:

fgrep -ircl --include=*.{sql} -- -- *

答案 2 :(得分:1)

短划线字符只能位于方括号[]中的第一个位置,因为它们表示范围[a-z]或[0-9]。你可以做[ - ] [ - ]。

答案 3 :(得分:1)

如果您想fgrep以.sql结尾的所有文件,请使用

fgrep -ircl --include=*.sql -- -- *

或(注意{sql,}中的逗号:

fgrep -ircl --include=*.{sql,} -- -- *

如果您想要fgrep多种类型的扩展名,请使用类似

的内容
fgrep -ircl --include=*.{sql,txt} -- -- *

正如其他人已经提到的那样,第一个--告诉fgrep停止寻找标志和选项。第二个--是固定字符串模式。

答案 4 :(得分:0)

尝试使用单引号'[--]'代替"[--]"

fgrep -ircl --include=*.{sql} '[--]' *