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
。
它怎么也会输出第一行呢?
答案1
您的捕获组\([[:alpha:]]\{1,\}\)
捕获一个或多个字母字符的序列,并将其锚定到行首^
所以它将abc
在第一行和aaa
第二行匹配。
因此,整个表达式'^\([[:alpha:]]\{1,\}\) .* \1$
与至少两个空格分隔的序列的任何行匹配,这些序列以与其开头相同的字母序列结尾:
abc <anything - or nothing> abc
aaa <anything - or nothing> aaa
等等。