Como encontrar palavras com parte do contexto circundante usando grep?

3

Eu quero usar o grep para determinar quantos caracteres devem ser exibidos antes e depois do que está sendo pesquisado. Por exemplo, eu quero filtrar 'exemplo' da linha 'este é um exemplo'. Usando grep example , o resultado seria toda a linha contendo a string, quando o que eu espero obter é apenas " um exemplo ", dois caracteres antes da palavra exemplo .

    
por FrEqDe 17.02.2017 / 03:45

2 respostas

11

existem opções grep

grep -Eo '...example' test.txt

onde

  • -E usa expressão regular estendida
  • -o ouput apenas string correspondente
  • ... significa qualquer caractere 3
  • ambas as opções podem ser mescladas como -Eo
  • '' coloque o patern para evitar a subsituição do shell

uma nota sobre substituição de casca

grep -Eo ???example file

pode não funcionar como esperado se um arquivo como 123example estiver presente no diretório em que o grep está sendo executado.

    
por 17.02.2017 / 07:18
5

Você pode canalizar a saída de grep para sed. Aqui está um exemplo:

grep example test.txt | sed 's/.*\(...example\)//'

Para um tutorial sobre sed, consulte o link

    
por 17.02.2017 / 05:42