0

我已经尝试过=~ "\[[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]打击

4

1 回答 1

1

那样的东西是不够的。您必须在[[.

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

编辑:

test,不同,[[它的参数不需要引号。您的代码不匹配任何内容,因为您不能"在行首之前,也不能在行"尾之后。删除引号。

于 2012-09-17T00:56:06.460 回答