O tutorial ao qual você está vinculado é muito superficial.
Se você quiser usar o sed com seriedade, sugiro link em vez disso.
O comando s
no sed usa from pattern
, to string
e, opcionalmente, flags
. Tradicionalmente, eles são separados por um caractere /
, mas qualquer pontuação pode ser usada e isso é sensato se os argumentos de ou para contém / caracteres.
Portanto, nesse caso, os sinalizadores são g
, o padrão de é (^[a]|\. [a-z])
e a string é \U&\E
Neste ponto, você precisa saber como entender o padrão. Os caracteres ()
são usados para agrupar partes do padrão. A |
é uma or
das operações, então this|that
corresponderia a this
ou that
. O ^
corresponde ao início de uma linha e o [a]
corresponde à letra a
, por isso ^[a]
corresponde a uma letra a
no início de uma linha. O \.
corresponde a um caractere .
, o espaço corresponde a um espaço e o [a-z]
corresponde a um caractere entre a
e z
inclusive (esperamos que sejam todas as letras minúsculas e nada mais). Juntando isso, você recebe \. [a-z]
corresponde a um ponto final (período) seguido por um espaço seguido por uma letra entre a
e z
inclusive.
A string \U&\E
é decodificada da seguinte forma. os &
são os caracteres que correspondem ao padrão de origem. O \U
diz para converter o que segue para maiúsculas e o \E
diz para terminar a conversão. O \ U e \ E são extensões do gnu para sed. Aqui está o POSIX sed
As bandeiras g
dizem para repetir a correspondência quantas vezes forem possíveis e fazer as substituições.
Assim, o código que você copiou do tutorial converte um minúsculo no início de uma linha ou uma sequência de "espaço de período lower_case_letter" para maiúscula.