2017-08-17 72 views
1

我有一個文本文件。 我想要獲得以特定格式開頭的行。 我只想得到有x/x/x格式的行。 x是一個數字。 但是這個正則表達式不起作用。它總是給人不匹配:Linux外殼腳本正則表達式匹配

while read line   
do   
    regex="\d+\/\d+\/\d+" 
    if [[ ${line} =~ ${regex} ]]; then 

     echo ${line} 

    else 

     echo "no match : ${line}" 

    fi  
done <${textFileName} 

文件是:

enter image description here

回答

1

不要使用bash的,如果你能使用更好的工具:

grep -E '^[[:digit:]]+/[[:digit:]]+/[[:digit:]]+' "${textFileName}" 

但如果你有要使用bash:

while IFS= read -r line 
do 
    if [[ "$line}" =~ ^[[:digit:]]+/[[:digit:]]+/[[:digit:]]+ ]]; then 
    echo -- "$line" 
    else 
    echo "no match: $line" 
    fi 
done < "$textFileName" 

\d無效regex(3)

+0

嗨,我應用你的代碼。但沒有工作。而IFS =讀-r線 做 如果[[ 「$ {線}」=〜 '[[:數字:]] +/[[:數字:]] +/[[:數字:]] +' ]];然後 echo - 「X:$ line」 else echo「no match:$ line」 fi done <「$ textFileName」 – ivbtar

+0

不要引用正則表達式 –