Eu quero filtrar duas linhas da saída de um programa [closed]

1

Eu tenho um comando que gera um monte de dados, mas eu só quero duas linhas. O grep não funciona porque as linhas que eu quero não estão próximas umas das outras. Eu não consigo descobrir sed ...

Ajuda por favor. :)

Exemplo de saída:

Schedule:
   blabla:
   blabla:
   blabla:
   blabla:   
   blabla:
   blabla:
   Something Level:
   blabla:   
   blabla:
   blabla:

Eu quero estas linhas:

Schedule:
   Something Level:

Essa saída é repetida pelos diferentes servidores e a saída não é a mesma. Então eu preciso procurar um padrão de duas coisas várias vezes.

    
por Bernard 18.04.2013 / 19:50

2 respostas

1

Use apenas as opções -v (correspondência de inversão) e -E (extensão regexp estendida) do grep:

$ grep -vE "Schedule:|Something Level:" filename
    
por 18.04.2013 / 19:53
1

Qualquer um deles funcionará, escolha seu favorito

grep 'Schedule:\|Something Level:'
grep -E 'Schedule:|Something Level:'

sed '/Schedule:\|Something Level:/!d'
sed -r '/Schedule:|Something Level:/!d'

sed -n '/Schedule:\|Something Level:/p'
sed -rn '/Schedule:|Something Level:/p'

awk '/Schedule:/ || /Something Level:/'
awk -F: '$1 == "Schedule" || $1 == "   Something Level"'

Tem que ter cuidado ao combinar o espaço em branco no último.

    
por 18.04.2013 / 20:32