linux中关于grep的一个简单问题!

来源:百度知道 编辑:UC知道 时间:2024/06/27 04:14:41
当前目录下有一个result文件,内容为:
hahawolf
wo/lf$fde\tert

命令
grep -E '$' < result
的结果是这样的:

hahawolf
wo/lf$fde\tert

这是为什么呢?不是说单引号内的特殊符号都会被当成普通字符处理而不会被转义么?我觉得结果应该是什么都不显示才对,因为文件内没有美元符号$。

有高人能指点一下么?

加一个重定向 有点画蛇添足的感觉啊 本来 grep -E '$' result 就跟
grep -E '$' < result 是一模一样的吧 完全没有必要嘛

第二 grep中 匹配$字符是需要2次转义的 不加 ''的时候 是这么写的

grep \\$
加了 '' 以后 仍然需要转义一次
grep '\$'

同理 ^ 等正则表达式的元字符都需要这样处理

当然 在grep -E的情况下 诸如 \w \( \) 这样的就不许要再加转义 符了

单引号内的特殊符号不包括元字符 尤其在 grep -E的情况下 元字符不用加转义即为元字符的意思了

$本身代表行尾 , 你的命令就是匹配行尾的意思 这样 共有2行 结果都打印出来了

我认知也有点混乱, 表达不清莫怪 , 实际运行下就了解了

搜索命令的命令集自己去CHECK一下嘛!