Regex 如何对带破折号的字母和数字使用正则表达式

Regex 如何对带破折号的字母和数字使用正则表达式,regex,unix,search,string-matching,Regex,Unix,Search,String Matching,这就是我目前在shell脚本中的内容。我对正则表达式很在行 echo $1 | grep -E '^[A-Z]${3}|^[0-9]${4}|^[ABCD]$' 我需要这样的输入: ./dlchek.sh ACV-1319-A 这是一般格式:XYX-1111-A其中XYX可以是任意字母,1111可以是任意数字,A必须是(A、B、C、D)中的任意一个。顺便说一下,我正在使用unix。我只需要检查格式是否正确,如果正确则以代码0退出,如果不正确则以代码1退出 这是预期的输出:其中第3行是唯一有效

这就是我目前在shell脚本中的内容。我对正则表达式很在行

echo $1 | grep -E '^[A-Z]${3}|^[0-9]${4}|^[ABCD]$'
我需要这样的输入:

./dlchek.sh ACV-1319-A
这是一般格式:XYX-1111-A其中XYX可以是任意字母,1111可以是任意数字,A必须是(A、B、C、D)中的任意一个。顺便说一下,我正在使用unix。我只需要检查格式是否正确,如果正确则以代码0退出,如果不正确则以代码1退出

这是预期的输出:其中第3行是唯一有效的,因为它遵循了格式

[you@blue final]$ ./dlcheck.sh ACV-13-A
[you@blue final]$ echo $?
1
[you@blue final]$ ./dlcheck.sh ACV-13119-A
[you@blue final]$ echo $?
1
[you@blue final]$ ./dlcheck.sh ACV-1319-A
[you@blue final]$ echo $?
0
[you@blue final]$ ./dlcheck.sh ACV-1319-Y
[you@blue final]$ echo $?
1

那些$$在里面干什么?结局太多了。那些管子呢??像我一样,使用它,你每次都会学到一些东西。

谢谢你的快速回复。我在regex101中尝试了它,但在我的.sh中确实有效。这就是我现在拥有的:grep-E'^[A-Z]{3}-[0-9]{4}-[ABCD]$这是文件中的全部内容吗?是的,这是目前为止唯一需要检查的内容。我将添加退出代码和循环后,如果发现这一点。我把它设置为一个变量。所以基本上是这样的:x=
echo$1 | grep-E'^[A-Z]{3}-[0-9]{4}-[ABCD]$'
echo$x以查看它是否匹配我的意思是,除了您要查找的内容之外,文件中还有其他内容吗。因为如果不是,则需要除^和$之外的其他分隔符。\b怎么样\我将如何将其实现为描述中描述的格式以及我现在拥有的代码?
^[A-Z]{3}-[0-9]{4}-[ABCD]$