簡體   English   中英

如何檢查正則表達式的字符/(斜杠)和^使用Shell腳本Linux

[英]How to check Regex for character / (escape slash) and ^ Using Shell Scripting Linux

我想使用Linux的Shell腳本檢查行中是否有特定字符。 到目前為止,使用正則表達式(正則表達式)的代碼可以識別某些字符,但是在檢查char'^'和'/'時會出現問題(我只檢查了這兩個,也許還檢查了'\\'。

這是鱈魚

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>

程序將運行,然后在到達“ /”時停止。 但是如果您刪除“ /”(或“ ^”(如果存在))並替換為(假設)“&”

<CurrencyTarget>IDR<&CurrencyTarget>

程序將顯示“文件不正確。包含無效字符”。

如何修復/和^字符的行為? 我已經嘗試使用/ \\或// \\(谷歌搜索,我明白了),但仍然出錯。

nb:我知道引起的錯誤,因為如果使用^,則參數^ $ VALID將變為^^如果使用/則參數^ $ VALID也會變為^ /,但我不知道如何正確修復它。

任何幫助真的很感激

這種情況是問題所在:

if [[ ! $line =~ [^$VALID] ]]; then
                 ^^^^^^^^^

您可以將其用作:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM