Optimieren des sed-Befehls oder Erstellen eines neuen

Optimieren des sed-Befehls oder Erstellen eines neuen

Ich versuche, eine wirklich große Protokolldatei zu filtern und frage mich, ob es Alternativen für meine Befehle gibt? Oder eine Optimierung? Hier ist der Code:

#!/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

Antwort1

Als ersten Schritt würde ich alle temporären Dateien entfernen und stattdessen eine Pipe verwenden: Von der ersten Datei aus sedkönnen Sie stdout zur zweiten und dann zur dritten Datei weiterleiten. Dann lessist Ihr Befehl nutzlos: Leiten Sie einfach erneut von der dritten sedDatei zur grep.

Die Verwendung von Pipe bietet Ihnen viele Vorteile: Erstens verschwenden Sie keinen Speicherplatz und zweitens müssen Sie nicht auf all diese Festplatten-E/A-Vorgänge warten.

Um eine Lösung schneller finden zu können, sollten Sie uns mitteilen, was Sie derzeit blockiert: Ist es einer der sedBefehle? Welcher?

verwandte Informationen