Bash script grep -E “[a-z, A-Z, 0-9 \. \ -] {2,}” / etc / hostname

1

Eu estava trabalhando em um roteiro e tentando entendê-lo Aqui está uma peça que eu não consegui entender.

grep -E "[a-z,A-Z,0-9\.\-]{2,}" /etc/hostname Neste código eu entendo que ele tenta obter dados de / etc / hostname. Qualquer coisa que comece com a-z ou A-Z ou números pode ser.

Mas, começando com:

\.\-]{2,}

essa parte eu não consegui resolver. Alguém pode explicar o que é isso?

    
por Can Buyukburc 25.03.2018 / 22:24

2 respostas

0

Veja o que significa sua expressão regular, da esquerda para a direita:

[

início de um conjunto de caracteres (ou classe de caractere). Corresponde a um caractere do conjunto.

a-z,A-Z,0-9

dentro de um conjunto de caracteres significa corresponder a qualquer caractere a-z ou A-Z ou 0-9 . As vírgulas são realmente opcionais aqui, a menos que você esteja tentando corresponder literalmente a uma vírgula.

\.\-

. é um caractere especial que combina com qualquer caractere, mas dentro de um conjunto de caracteres ele não tem nenhum significado especial e não precisa ser escapado. O - aqui não precisa ser escapado, se for o primeiro ou último caractere em um conjunto que corresponde a um literal - , ele só assume um significado especial quando entre dois outros caracteres em um conjunto.

]

fim do conjunto de caracteres. O conjunto corresponde a qualquer caractere a-z ou A-Z ou 0-9 ou . ou - .

{2,}

é um quantificador. Isso significa que o regex anterior deve ser combinado 2 ou mais vezes.

Assim, o comando pode ser reduzido para isso:

grep -E "[a-zA-Z0-9.-]{2,}" /etc/hostname

Quando usado com o -P flag grep interpreta o padrão como uma expressão regular Perl. As expressões regulares Perl são quase idênticas ao regex do Python. É um modo mais poderoso que -E na minha opinião. No modo Perl, seu comando se torna:

grep -P "[a-zA-Z\d.-]{2,}" /etc/hostname
    
por 26.03.2018 / 01:10
0

O {2,} é um Quantificador, nesse caso, ele corresponderá de 2 a tantas instâncias possíveis das letras na lista entre o [] .

O \.\- corresponderá a um '-' ou a '.'. Esses dois caracteres geralmente são especiais e geralmente precisam ser escapados com o \ . Mas dentro do grupo [] , o ponto não é especial, então o \ não é necessário nesse caso. Além disso, o - é um indicador de intervalo e não é especial se for o primeiro ou o último no grupo.

Então, no final, você poderia usar:

[,a-zA-Z0-9.-]{2,}
    
por 25.03.2018 / 22:37