четкое понимание обратной ссылки grep [duplicate]

На этот вопрос уже есть ответ здесь:

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

ловит

abc whatever whatever abc
aaa whatever whatever aaa

Я думал, что мой grep отловит только вторую строку, которая начинается с "aaa", потому что ^\([[[:alpha:]]\{1,\}\) выводит только строки, такие как a | aa | aaa | b | bbbb, а не ab | abc.

Как он выводит и первую строку?

0
задан 27 January 2017 в 16:50

1 ответ

Ваша группа \([[:alpha:]]\{1,\}\) получения получает последовательность одного или нескольких буквенных символов, и Вы привязали ее к запуску из строки с ^

, Таким образом, она будет соответствовать abc в первой строке, и aaa во второй строке.

целое выражение '^\([[:alpha:]]\{1,\}\) .* \1$ поэтому соответствует любой строке по крайней мере двух разделенных пробелом последовательностей, которая заканчивается той же алфавитной последовательностью, с которой это запустилось:

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

и так далее.

1
ответ дан 7 November 2019 в 02:24

Другие вопросы по тегам:

Похожие вопросы: