Sed substitui o alfabeto por maiúsculo após o período

1

Acabei de passar por um tutorial sed artigo. Alguém pode me explicar este comando para mim (muda de alfabeto para maiúscula após período)

sed -E 's/(^[a]|\. [a-z])/\U&\E/g' filename.txt
    
por ajay3208 12.11.2016 / 20:22

1 resposta

4

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.

    
por 12.11.2016 / 22:08