Otimizando o comando sed ou criando um novo

0

Estou tentando filtrar um arquivo de log realmente grande e imaginando se há alguma alternativa para meus comandos? ou alguma otimização? aqui está o código:

#!/bin/bash
nice -20 sed '/./{H;$!d;};x;/37455299339/!d' 1.txt > /tmp/new.txt
nice -20 sed -n '/Acct-Status-Type/,/NAS-Identifier/p' /tmp/new.txt > /tmp/new_1.txt
rm /tmp/new.txt
nice -20 sed '/Acct-Status-Type/{x;p;x;}' /tmp/new_1.txt > /tmp/new_2.txt
rm /tmp/new_1.txt
nice -20 less /tmp/new_2.txt | grep -A1 -B1 37455299339 | grep -A1 -B1 User-Name > new_3.txt
    
por user37033 12.04.2013 / 08:39

1 resposta

2

Como primeiro passo, eu removerei todos os arquivos temporários e usarei o pipe: do primeiro sed , você pode enviar o stdout para o segundo e depois para o terceiro. Então, seu comando less é inútil: apenas canalize novamente do terceiro sed para grep .

Usando o pipe, você terá muitos benefícios: primeiro, você não desperdiçará seu espaço em disco; segundo, você não esperará por todas essas E / S de disco.

Para melhor encontrar uma solução, você deve nos dizer o que está bloqueando você: é um dos comandos sed ? Qual deles?

    
por 12.04.2013 / 15:37

Tags