在bash中如何匹配表单[SOME_ALPHA_NUM_WORD]的字符串?

时间:2012-09-17 00:53:02

标签: regex bash

我尝试过像=~ "\[[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]

1 个答案:

答案 0 :(得分:1)

这样的东西是不够的。您必须在[[中使用它。

$ [[ [foo] =~ ^\[[A-Za-z0-9]+\]$ ]] ; echo $?
0

修改

test不同,[[不需要围绕其参数引用。您的代码没有任何匹配,因为您不能在行开头之前",也不能在结束之后"。删除引号。