Grep procurando palavras por letra

0

Estou pesquisando por meio de um arquivo de pessoas estruturado como abaixo

John Smith 555-555-5555 Harvard Square, Boston

Estou interessado em encontrar todos os ÚLTIMOS nomes que começam com uma certa letra. Eu tentei usar "grep \     

por Justin 12.10.2014 / 00:44

2 respostas

2

Sugiro que você use awk em vez de grep , por exemplo. para encontrar linhas cujo segundo campo separado por espaço comece com a letra S

awk '$2 ~ /^S/' file
    
por steeldriver 12.10.2014 / 00:52
0

Tente usar grep com um padrão Regex:

grep -P "(?<=^[A-Za-z]+\s)A"

Isso deve corresponder a todas as entradas com o sobrenome começando com A.

Explicação de regex

O Lookbehind (?<=text) verifica se text ocorre antes do padrão realmente pesquisado. Eu uso para pular o primeiro nome, que é dado por ^[A-Za-z]+\s , significando início de linha ( ^ ), então pelo menos uma letra, não importa se é capticial ou não, então um espaço ( \s ). Após o lookbehind, o padrão realmente correspondido é, neste caso, a letra maiúscula A.

    
por s3lph 12.10.2014 / 00:52