如何在 grep 中使用正则表达式查找字符串

如何在 grep 中使用正则表达式查找字符串

list所以我有一个包含公司人员名单的文件。每行包含职位(短字符串)、年份、姓名(名字和姓氏)、薪水和国籍(三个大写字母)。它们用逗号分隔。

我想使用 grep 和 regex 找到两件事:

  1. 所有姓氏以 C 开头的人。
  2. 所有有3个名字的人

对于第一个我尝试过的:grep -E 'C\>' list,但它只返回一个名称(奇怪)。对于第二个:grep "[[:alpha:]]\b[ ]\?[[:alpha:]]\b[]\?[[:alpha:]]" list,但它也失败了。

答案1

\>是单词结尾的(零长度)正则表达式,因此C\>可能与姓氏不匹配开始带有“C”。也许你应该尝试\<C一下。

[[:alpha:]]火柴正好一个字符,因此这也不太可能与真实姓名匹配。您应该附加一个乘数,例如*or +(仅在 ERE 中?)。

相关内容