fgrep -ircl --include=*.{sql} "[--]" *
似乎没有做到这一点。请帮忙......
感谢回复人员。我正在尝试用'#'替换' - ',并且我很难过。我在这里创建了一个new question。如果你能提供帮助,那就太棒了。
答案 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} '[--]' *