
Estou tentando filtrar um arquivo de log muito grande e me pergunto se existem alternativas 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
Responder1
Como primeiro passo, eu removeria todos os arquivos temporários e usaria o pipe: do primeiro sed
você pode canalizar o stdout para o segundo e depois para o terceiro. Então, seu less
comando é inútil: basta canalizar novamente do terceiro sed
para grep
.
Usando o pipe você terá muitos benefícios: primeiro você não desperdiçará espaço em disco e, segundo, 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ê no momento: é um dos sed
comandos? Qual deles?