Este regex é geralmente usado para extrair nomes de usuários do arquivo /etc/passwd
. Por exemplo
sed 's/\([^:]*\):\(.*\)//' /etc/passwd
Retornará os nomes de usuário somente da passwd
password.
1st Capturing Group ([^:]*)
Match a single character not present in the list below [^:]*
* Quantifier — Matches between zero and unlimited times, as many times as possible, giving back as needed (greedy)
: matches the character : literally (case sensitive)
: matches the character : literally (case sensitive)
2nd Capturing Group (.*)
.* matches any character (except for line terminators)
* Quantifier — Matches between zero and unlimited times, as many times
Então, em termos simples.
Primeira parte:
sed 's/\([^:]*\):
/\([^:]*\): Match the string till you see a colon ':' and group.
Segunda parte:
sed \(.*\)//' /etc/passwd
\(.*\) Match everything after ':' and group
Agora temos dois grupos em que podemos back-reference
usando , o que indica que queremos fazer referência ao primeiro grupo e imprimir esses resultados.