entendimento claro de backreference do grep [duplicado]

-1
grep '^\([[:alpha:]]\{1,\}\) .* $' myfile.txt 

pega

abc whatever whatever abc
aaa whatever whatever aaa

Eu pensei que meu grep só pegaria a segunda linha que começa com "aaa" porque ^\([[[:alpha:]]\{1,\}\) apenas produz sequências, como a | aa | aaa | b | bbbb , não ab | abc .

Como também é produzido a primeira linha?

    
por Mint.K 28.01.2017 / 00:50

1 resposta

1

Seu grupo de captura \([[:alpha:]]\{1,\}\) captura uma sequência de um ou mais caracteres alfabéticos e você o ancorou no início de linha com ^

Portanto, ele corresponderá a abc na primeira linha e aaa na segunda linha.

A expressão inteira '^\([[:alpha:]]\{1,\}\) .* $ , portanto, corresponde a qualquer linha de pelo menos duas sequências separadas por espaço que terminem com a mesma sequência alfabética com a qual ela começou:

abc <anything - or nothing> abc
aaa <anything - or nothing> aaa

e assim por diante.

    
por steeldriver 28.01.2017 / 00:59