Linux bash脚本和命令grep是否对单引号有不同的处理方式
在高级Bash脚本指南中,我发现 在单引号中,除' 逐字解释 因此,我认为Linux bash脚本和命令grep是否对单引号有不同的处理方式,linux,bash,Linux,Bash,在高级Bash脚本指南中,我发现 在单引号中,除' 逐字解释 因此,我认为grep'\'file.txt将搜索\,而不是单词的。但它确实搜索了 #!/bin/bash grep '\<the\>' file.txt #/bin/bash grep'\'file.txt 已添加 也许我没有清楚地描述我的问题。在手册页中 将字符括在单引号中会保留引号中每个字符的文字值 所以我的问题是:既然bash将单引号中的封闭字符视为文本值,为什么在grep中'\'被视为的?它是不是与bash不
grep'\'file.txt
将搜索\
,而不是单词的
。但它确实搜索了
#!/bin/bash
grep '\<the\>' file.txt
#/bin/bash
grep'\'file.txt
已添加也许我没有清楚地描述我的问题。在手册页中 将字符括在单引号中会保留引号中每个字符的文字值
所以我的问题是:既然bash将单引号中的封闭字符视为文本值,为什么在grep中
'\'
被视为的?它是不是与bash不同的grep
自己的特性?您需要添加另一个反斜杠\
,以匹配整个模式,因为符号\
是grep的专用符号。引用手册页:mangrep
反斜杠字符和特殊表达式
The symbols \< and \> respectively match the empty string at the beginning and end
of a word.
符号\<和\>分别匹配开头和结尾的空字符串
一句话。
您需要添加另一个反斜杠
\
以匹配整个图案,因为符号\
对于grep
是特殊的。引用手册页:mangrep
反斜杠字符和特殊表达式
The symbols \< and \> respectively match the empty string at the beginning and end
of a word.
符号\<和\>分别匹配开头和结尾的空字符串
一句话。
事实上,bash
会按字面意思传递字符串
解释字符串(作为正则表达式)的是grep
。如果要避免这种情况,请使用grep-F
。使用该选项,grep
将逐字搜索给定字符串。实际上,bash
将逐字传递字符串
解释字符串(作为正则表达式)的是
grep
。如果要避免这种情况,请使用grep-F
。使用该选项,grep
将逐字搜索给定的字符串。事实上,grep
是理解引号的一个糟糕的例子,因为正则表达式中的许多字符对grep
有特殊意义。事实上,grep
是理解引号的一个糟糕的例子,因为正则表达式中的许多字符对grep
具有特殊意义。另请参见强制xkcd:另请参见强制xkcd: