grep表示同时包含大小写字母的单词
我正在转换一系列(Progress)程序,以便在linux上使用(以前在Windows上使用过),我正在寻找一种方法来grep程序名的大小写,例如“skip_xref.I”或“NO_dt2.I”。grep表示同时包含大小写字母的单词,grep,uppercase,lowercase,Grep,Uppercase,Lowercase,我正在转换一系列(Progress)程序,以便在linux上使用(以前在Windows上使用过),我正在寻找一种方法来grep程序名的大小写,例如“skip_xref.I”或“NO_dt2.I”。 如何实现这一点?您可以使用ls-l | grep'pattern1\| pattern2' (假设您位于要搜索程序的目录中) 进行web搜索,阅读有关generalregexbasics的更多信息,以获得所需的模式。要查找文件名,您不能使用grep,您需要使用find 您可以在find中使用正则表达式
如何实现这一点?您可以使用
ls-l | grep'pattern1\| pattern2'
(假设您位于要搜索程序的目录中)
进行web搜索,阅读有关general
regex
basics的更多信息,以获得所需的模式。要查找文件名,您不能使用grep,您需要使用find
您可以在find中使用正则表达式,但需要匹配整个路径。用*/\
开始匹配将解决问题,因此这不是什么大问题
然后:
将匹配至少有一个小写字符后跟一个大写字符的文件名
如果使用group具有此模式以及相反的模式(切换小写和大写),则应获得所有匹配项:
find . -regex ".*/\(\(.*[a-z]+.*[A-Z]+\)\|\(.*[A-Z]+.*[a-z]+\)\).*"
此正则表达式应有助于:
[a-z].*[A-Z]|[A-Z].*[a-z]
如果您想与grep合作:
grep '[a-z].*[A-Z]\|[A-Z].*[a-z]'
或
我没有回答这个模棱两可的问题,但您可以使用grep
-I的不区分大小写标志
e、 g.docker help build | grep-i dockerfile
它仍然会找到“dockerfile”。我建议在grep前面加上LANG=C
,因为它不适用于我的默认值LANG=en_US.UTF-8
。谢谢你的建议。如果我想把grep限制在包含。(点)?我要查找的名称通常以一个点结尾,后跟一个字符:Program.I或aFileName。p@Kent使用您建议的命令,我得到所有程序中的所有行。@标记您没有使用带点的图案,是吗<代码>[a-z].*.
我指的是答案中的模式。@Kent不,我是这样使用的:grep'[.].$'| grep-E'[a-z].[a-z].[a-z].*.\124;而且我肯定想使用grep。我想在某个文件夹中的所有文件中搜索文本,这些文本可能是程序名,由小写和大写字母组成
grep '[a-z].*[A-Z]\|[A-Z].*[a-z]'
grep -E '[a-z].*[A-Z]|[A-Z].*[a-z]'