Ich bin völlig neu im Bash-Scripting. Ich versuche, ein Skript, um durch zu lesen recent_log.txt
Linie Zeile zu schreiben, die den folgenden Inhalt hat:Lesen und Ausführen verschiedener Befehle basierend auf jeder Zeile der Datei in Bash Linux?
[email protected]:/var/cache/logs$ head recent_log.txt
./calisto/tomcat6-energy/calls.log.2016-03-05
./calisto/tomcat6-energy/calls_flush.log.2016-03-05.gz
./calisto/tomcat6-energy/catalina.2016-03-05.log.gz
./calisto/tomcat6-energy/energy-receive.log.2016-03-05.gz
./calisto/tomcat6-energy/energy.log.2016-01-01.gz
./calisto/tomcat6-energy/energy.log.2016-01-02.gz
./calisto/tomcat6-energy/energy.log.2016-01-03.gz
./calisto/tomcat6-energy/energy.log.2016-01-04.gz
./calisto/tomcat6-energy/energy.log.2016-01-05.gz
./calisto/tomcat6-energy/energy.log.2016-01-06.txt
und dann unten für jede Zeile hängt von dem Suffix den Befehl ausführen. Die Ausgabe sollte in einer anderen Datei erfolgen. jeder Ausgang sollte 2 Zeilen Abstand zwischen ihnen haben.
zcat users_energy.log.2016-03-20.gz | head -n5
Das ist meine Lösung so weit ist, und ich bin nicht sicher, wie ich es vollenden sollte:
RAW_LOG_DIR=/var/cache/logs/recent_log.txt
OUTPUT_DIR=/var/cache/logs/output
for LOG in $RAW_LOG_DIR; do
zcat -f ${RAW_LOG_DIR} | head -n5 > OUTPUT_DIR
done
Würden Sie mir zu helfen, bitte, wie kann ich unterscheiden zwischen Katze oder zcat, .. und Wie vervollständige ich meinen Code?
Vielen Dank für Ihre Antwort, die ersten beiden Zeilen sollten da sein, oder? 'RAW_LOG_DIR',' OUTPUT_DIR'? Außerdem, wo kann ich 2 Zeilen als Trennzeichen zwischen jedem Ergebnis haben? oder wenn ich etwas in Ausgabe als Trennzeichen zwischen jedem Ergebnis schreiben kann? –
gibt es einige Nachricht 'Kopf: kann nicht öffnen' ./cal/tom/energy.log.2016-03-22 'zum Lesen: Keine solche Datei oder Verzeichnis head: kann './cal/tom/localhost_access_log.2016 nicht öffnen -03-22.txt 'zum Lesen: Keine solche Datei oder Verzeichnis " –
danke @ Tom Fenech –