uso de apostrofe no grep rexExp

1

Recentemente, comecei a aprender regExp e encontrei um bom exemplo dele no shell usando o grep para extrair apenas tags de âncora, por exemplo, URL<a href="unix.stackexchange.com"></a>

grep - 'href="[^"]*"' *.html

se eu entendi correto 'href="[^"]*"' significa encontrar href="0-infinity character that does not have " in it " mas não * tem que estar fora das aspas?

e estou bastante confuso. os ' ' são usados para escapar do significado especial dos caracteres. SO * não deve funcionar em todos os + *.html deve significar = 0-infinte characters que termina com .html = Então é possível ter dois ragExp em um grep?

    
por trolkura 20.11.2015 / 18:51

1 resposta

2

Primeiro, a saída é:

% grep -o 'href="[^"]*"' <<<'<a href="unix.stackexchange.com"></a>'
href="unix.stackexchange.com"
  • O padrão Regex é href="[^"]*" , é colocado dentro de aspas simples para evitar a interpretação da shell

  • *.html é o (s) arquivo (s) em que você está tomando a ação Regex / grep , aqui * é um padrão de geração de nome de arquivo do shell (corresponde a qualquer número de caracteres) que resultará em todos os arquivos no diretório atual que termina em .html

  • href=" será correspondido literalmente

  • [^"]* corresponderá à subseqüência até o próximo " , * corresponde a zero ou mais ocorrências do token anterior [^"] , portanto, se não houver caracteres entre dois " s, isso resultará em uma string vazia

  • " corresponde a um literal "

por 20.11.2015 / 19:07