2012-09-17 18 views
0

我已經嘗試過像=~ "\[[A-Za-z0-9]+\]"這樣的東西,我希望能工作,但沒有。我也試過"[[A-Za-z0-9]+]""\[[:alnum:]+\]"。我究竟做錯了什麼?採樣線我想匹配:[RTNUT18](我通過文件迭代,有的線路是這種形式)在bash中,如何匹配[SOME_ALPHA_NUM_WORD]形式的字符串?

這是我的代碼片段:

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]林得到命中e在所有

+0

plz粘貼你的代碼 –

+0

你爲什麼不使用grep這個? –

+0

那麼在實際的腳本中,我正在處理每一行if if elif elif elif ...這是一個配置文件的種類 –

回答

1

這樣的東西是不夠的。您必須在[[中使用它。

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

編輯:

不像test[[並不需要圍繞它的爭論報價。你的代碼什麼都不匹配,因爲你不能在行開始之前有",也不能在結束後有"。刪除引號。

+0

感謝這就是它 –