我正在搜索一个如下结构的人员文件
约翰·史密斯 555-555-5555 哈佛广场,波士顿
我想找到所有以特定字母开头的姓氏。我尝试使用“grep \
答案1
我建议你使用awk
而不是例如grep
查找第二个空格分隔的字段以字母开头的行S
awk '$2 ~ /^S/' file
答案2
尝试使用grep
正则表达式模式:
grep -P "(?<=^[A-Za-z]+\\s)A"
这应该与姓氏以 A 开头的所有条目匹配。
正则表达式解释
这向后看 (?<=text)
检查是否text
在实际搜索的模式之前发生。我使用它来跳过第一个名称,即给出的^[A-Za-z]+\\s
,表示行首(^
),然后是至少一个字母,无论是否大写,然后是一个空格(\\s
)。在后向查找之后,实际匹配的模式仍然存在,在本例中是大写字母 A。