我真的在这里的其他类似问题中搜索过这种问题,但找不到任何答案。
我在文件中有以下文本:
TYPE_A = "1" AND TYPE_B = "6" AND TYPE_C = "8755asd-"
我正在尝试 grep 以下内容(双引号可以包含数字、字符和特殊字符):
TYPE_C = "8755asd-"
我正在使用的 grep 命令是这样的:grep -o "TYPE_C =\"[0-9a-zA-Z-]*\""text.txt
但是,我认为这个命令中的正则表达式不是通用的。
感谢您的帮助。
只有当双引号包含您提到的所有字符时,您才可以使用下面匹配相应 TYPE
的正则表达式。即至少一个字符,至少一个数字,至少一个特殊字符。
grep -oP 'TYPE_[A-Z]\s*=\s*"(?=[^"]*[A-Za-z])(?=[^"]*\d)(?=[^"]*[^"\w])[\W\w]*?"' file
DEMO
例子:
$ cat ri
TYPE_A = "1" AND TYPE_B = "6" AND TYPE_C = "8755asd-"
TYPE_A = "1" AND TYPE_B = "6" AND TYPE_C = "875d"
TYPE_A = "1" AND TYPE_B = "6" AND TYPE_C = "asd-"
TYPE_A = "1" AND TYPE_B = "6" AND TYPE_C = "875-"
$ grep -oP 'TYPE_[A-Z]\s*=\s*"(?=[^"]*[A-Za-z])(?=[^"]*\d)(?=[^"]*[^"\w])[\W\w]*?"' ri
TYPE_C = "8755asd-"
我是一名优秀的程序员,十分优秀!