在The Linux Documentation Project中(我没有在Bash manual中找到有关正则表达式元字符的详细信息),元字符^
和$
被定义为匹配行:
^
:匹配行[...]开头的空字符串$
:匹配行尾的空字符串
但是,当我尝试时,这是不正确的:
$ string="a
> b
> c"
$ [[ $string =~ ^a ]] && echo BOS match
BOS match
$ [[ $string =~ ^b ]] && echo BOL match
# nothing
手册是否真的有误,或者我缺少什么?
^
匹配整个输入字符串的开头,而$
匹配整个输入字符串的结尾(在POSIX正则表达式中(Bash使用POSIX ERE))。您链接到的文档中提到行,因为大多数文本处理工具(例如sed
,grep
或awk
)默认情况下逐行读取输入,并且在大多数情况下字符串与该行重合。