我尝试过像=~ "\[[A-Za-z0-9]+\]"
这样的东西,我希望它会起作用但不会。我还尝试了"[[A-Za-z0-9]+]"
和"\[[:alnum:]+\]"
。我究竟做错了什么?我要匹配的示例行:[RTNUT18]
(我正在遍历文件,某些行是这种形式)
这是我的代码段:
while read line;
do
if [[ $line =~ "^\[[A-Za-z0-9]+\]$" ]]; then
echo match
else
echo no match
fi
done < $1
这是一个示例文件:
[RBPAT7]
Whatever=foo,bla
Otherline
RRR
我跑:
./script.sh thefile.txt
我根本没有点击[RBPAT7]
行
答案 0 :(得分:1)
这样的东西是不够的。您必须在[[
中使用它。
$ [[ [foo] =~ ^\[[A-Za-z0-9]+\]$ ]] ; echo $?
0
修改强>
与test
不同,[[
不需要围绕其参数引用。您的代码没有任何匹配,因为您不能在行开头之前"
,也不能在结束之后"
。删除引号。