Não é a concha
Nenhuma das respostas até agora abordou o problema real. Seria útil explicar por que não funciona como o esperado.
grep -i "^**" test.out
Porque você citou o padrão para grep , não*
é expandido pelo shell. É passado para grep como está. Isso é explicado na página de manual [1] do bash [2] :
A inclusão de caracteres entre aspas duplas preserva o valor literal de todos os caracteres entre aspas, com exceção de $, `, \ e, quando a expansão do histórico está ativada,!
É expressões regulares regulares regulares
Uma expressão regular é um padrão que descreve um conjunto de cadeias.
*
é um dos principais padrões nas expressões regulares. Por padrão, o grep interpreta da seguinte maneira:
* The preceding item will be matched zero or more times.
Isso significa que seu padrão, tal como está, ^**
não faz muito sentido. Possivelmente, ele tenta coincidir com o início da linha zero ou mais vezes , duas vezes. O que quer que isso signifique.
A solução é citá- lo:
Qualquer meta-caractere com significado especial pode ser citado precedendo-o com uma barra invertida.
grep -i "^\*\*" test.out
[1] Eu não recomendo a leitura. Por favor, use man dash
ou similar.
[2] Nenhum shell foi dado, então eu assumo o bash .
*
não precisa escapar nesse caso específico, fwiw.