如何检查正则表达式的字符/(转义斜杠)和^使用Shell Scripting Linux

时间:2015-08-07 14:19:42

标签: regex linux shell scripting

我想使用shell脚本为linux检查一行中是否有特定字符。到目前为止,使用正则表达式(正则表达式)的代码可以识别某些字符,但是当检查字符“' ^”时会出现问题。和' /' (我只是检查这两个,也许' \'也。

这是codde

VALID='0-9a-zA-Z $%&@.#<>-'
while read line
do  
        if [[ ! $line =~ [^$VALID] ]]; then
        echo ""         
    else                    
        echo "File not okay. Contain Invalid Character"
        exit 1                      
    fi
done < $1

如果通过读取文件来运行程序,请说明该行包含

<CurrencyTarget>IDR</CurrencyTarget>

程序将运行,然后在到达&#39; /#39;时停止。 但如果你删除&#39; /&#39; (或&#39; ^&#39;如果存在)并将其替换为(假设)&#39;&amp;&#39;

<CurrencyTarget>IDR<&CurrencyTarget>

程序将显示&#34;文件不正确。包含无效字符&#34;。

如何修复/和^字符的行为? 我已经尝试使用/ \或// \(谷歌搜索,我得到了这个),但仍然是错误。

nb:我知道导致的错误,因为如果使用^那么参数^ $ VALID也将成为^^如果使用/ then参数^ $ VALID将变为^ /,但我不知道如何正确修复它。

任何帮助都非常感谢

1 个答案:

答案 0 :(得分:1)

这个问题是:

valid='^[0-9a-zA-Z $%&@.#<>-]+$'
line='abc-123'

[[ $line =~ $valid ]] && echo "matched" || echo "no match"

您可以将其用作:

{{1}}