Mic*_*ael 6 bash grep escaping
假设我有一个abc.txt包含行的文件ab*cd.当我用引号grep模式ab*cd但没有转义星号时它不起作用:
> grep ab*c abc.txt > grep "ab*c" abc.txt > grep 'ab*c' abc.txt
当我使用这两个引号和逃避它确实工作
> grep "ab\*c" abc.txt ab*cd > grep 'ab\*c' abc.txt ab*cd
现在我想知道为什么引号不起作用,如果我只使用引号而不转义星号.
Rub*_*ens 12
使用该标志-F来搜索固定字符串 - 而不是正则表达式.来自man grep:
-F, --fixed-strings
Interpret PATTERN as a list of fixed strings, separated by
newlines, any of which is to be matched. (-F is specified by
POSIX.)
Run Code Online (Sandbox Code Playgroud)
例如:
$ grep -F "ab*c" <<< "ab*c"
ab*c
Run Code Online (Sandbox Code Playgroud)
首先,你应该记住: regex =/= glob
*在正则表达式中有特殊意义.你必须逃避它以符合它的字面意思.没有逃脱*,grep试图匹配ab+(any number of b)+c
例如:
abbbbbbbbbbbbc