padrão grep com espaços principais

1

Eu preciso de ajuda para definir o padrão correto para o grep. Eu preciso encontrar todas as ocorrências de pattern onde a linha pode ter espaço (s) à esquerda. Por exemplo: No seguinte arquivo:

 1. No pattern recognized.
 2. Pattern to be recognized
 3.          Pattern to be recognized here also
 4.  pattern with only one leading space 

Eu gostaria de grep apenas linhas 2,3 e 4. Os números de linha são apenas para a referência.

Até agora eu tentei o seguinte:

grep -i '^ [[:blank:]]pattern' , mas retorna apenas a linha 4.

grep -i '[[:blank:]]pattern' retorna 1,3 e 4.

grep -i '^[[:blank:]]pattern' retorna 1,3 e 4.

- Mike P.S. Se este não for o fórum apropriado, então, por favor, me guie de acordo.

    
por Mike V.D.C. 19.06.2017 / 17:35

2 respostas

1

Sua linha 2 e 3 tem maiúscula P e requer zero ou mais espaços, então especifique exatamente isso:

$ grep '[[:blank:]]*Pattern'  input.txt                                  
 Pattern to be recognized
         Pattern to be recognized here also

Pessoalmente, recomendo estender seu padrão com outra coisa, como '[[:blank:]]Pattern.*recognized'

    
por Sergiy Kolodyazhnyy 19.06.2017 / 17:54
1

O que eu obtenho é que você não quer nenhum espaço inicial, como a linha 2 ou mais que um espaço, porque você está excluindo a linha # 4 que tem um espaço.

então eu sugiro:

egrep -i '^\s*pattern' file.txt | grep -v '^\spattern'

ou usando um único awk :

awk 'tolower($0) ~ /^\s*pattern/ && !/^\spattern/ ' file.txt
  • \s como espaço, você pode alterá-lo com blank , se desejar.
  • egrep -i '^\s*pattern' file.txt primeiro nós começamos todas as linhas iniciadas com ou sem qualquer tempo levando espaço seguindo por padrão.
  • grep -v '^\spattern' : excluímos os que contêm exatamente um espaço principal.

O exemplo acima funciona em um arquivo sem numeração, se o seu arquivo contiver números iniciais, use este:

egrep -i '\s*pattern' file.txt | grep -v '\spattern'

ou para awk :

awk 'tolower($0) ~ /\s*pattern/ && !/\spattern/ ' file.txt
    
por Ravexina 19.06.2017 / 18:20