0
所以這就是我目前在我的shell腳本中。我在正則表達式上很糟糕。如何對破折號的字母和數字使用正則表達式
echo $1 | grep -E '^[A-Z]${3}|^[0-9]${4}|^[ABCD]$'
我需要這樣我輸入:
./dlchek.sh ACV-1319-A
這是一般格式爲:XYX-1111-A,其中XY-X可以是任何字母,1111可以是任意數,A具有(A,B,C,D)。順便說一句,我正在使用unix。我只需要檢查格式是否正確,並在代碼0正確時退出,如果不正確則退出1。
這是預期的輸出:其中第3行是唯一符合格式的工作。
[[email protected]lue final]$ ./dlcheck.sh ACV-13-A
[[email protected] final]$ echo $?
1
[[email protected] final]$ ./dlcheck.sh ACV-13119-A
[[email protected] final]$ echo $?
1
[[email protected] final]$ ./dlcheck.sh ACV-1319-A
[[email protected] final]$ echo $?
0
[[email protected] final]$ ./dlcheck.sh ACV-1319-Y
[[email protected] final]$ echo $?
1
感謝您的快速響應。我在regex101中試過了,它工作但在我的.sh中工作。這就是我現在所擁有的:grep -E'^ [A-Z] {3} - [0-9] {4} - [ABCD] $' –
是該模式文件中的整個事物嗎? –
是的,這是目前唯一需要檢查的東西。如果解釋清楚,我會添加退出代碼和循環。我有它實際設置爲一個變量。所以基本如此:x ='echo $ 1 | grep -E'^ [AZ] {3} - [0-9] {4} - [ABCD] $''echo $ x查看它是否匹配 –