Kev*_*Kev 2 bash grep escaping
我的印象是在单引号内,例如'pattern',bash特殊字符没有插值,因此只需要单独转义单引号.
'pattern'
为什么echo "123" | grep '[0-9]+'输出什么,而echo "123" | grep '[0-9]\+'(加号逃脱)输出123呢?(同样地,echo "123" | grep '3|4'除非你逃脱,否则不输出|.)
echo "123" | grep '[0-9]+'
echo "123" | grep '[0-9]\+'
123
echo "123" | grep '3|4'
|
这是在CentOS 6.5上的bash 4.1.2和grep 2.6.3下.
cda*_*rke 6
grep使用基本正则表达式,如sed和vi.因为你必须逃避元字符,这很乏味.
grep
您可能需要扩展正则表达式,因此请使用egrep或grep -E(取决于使用的版本).检查你的man grep.
egrep
grep -E
man grep
另请参阅GNU文档以获取所涉及字符的完整列表.
目前,大多数语言都使用扩展正则表达式(ERE),它们更易于使用.基本正则表达式(BRE)实际上是一种回归.
归档时间:
10 年,5 月 前
查看次数:
125 次
最近记录: