Ich habe eine Protokolldatei auf meinem Computer gespeichert, die ich ein Skript zum Parsen erstellen möchte. Mein Ziel ist es, zwei Werte aus jeder Zeile der Protokolldatei zu ziehen und sie dann nebeneinander (möglicherweise mit Bindestrich getrennt) in derselben Zeile auszugeben und dann für jede Zeile innerhalb des Protokolls zu durchlaufen. Zum Beispiel können die folgenden Protokolle:Ausgabe von zwei bash loop Ergebniswerte auf die gleiche Zeile?
123-abc-thething01, 6, 1234, metadata, metadata, [email protected], metadata, 123abc
123-abc-thething02, 6, 1234, metadata, metadata, [email protected], metadata, 123abc
123-abc-thething03, 6, 1234, metadata, metadata, [email protected], metadata, 123abc
Nachdem das Skript ausgeführt wird hoffentlich erreichen ...
123-abc-thething01 - [email protected]
123-abc-thething02 - [email protected]
123-abc-thething03 - [email protected]
Im Moment habe ich den folgenden Code, die die richtigen Werte zieht, aber es ist Geben Sie einfach alle 'var1' und dann alle 'var2' wie unten gezeigt aus, anstatt Zeile für Zeile durchzugehen, geben Sie var1 und var2 Werte für Zeile 1 in einer einzelnen Zeile aus, dann var1 und var2 für Zeile 2 in einer neuen Zeile ETC
Ich habe einige Zeit versucht, verschiedene Möglichkeiten, dies zu tun, aber ich bin ein wenig ratlos. Ich bin im Moment nicht sehr stark mit bash, also würde jede Hilfe sehr geschätzt werden. Vielen Dank.
#!/bin/bash
for i in logfile.txt
do
var1=$(cat logfile.txt | awk '{print $1}' | sed 's/,//g')
var2=$(cat logfile.txt | grep -o '[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*')
done
echo ${var1}
echo ${var2}
Sie sollten keine Shell-Skripte verwenden, um Textdateien zu analysieren, zum Beispiel könnte dies nur mit awk 'awk -F, '{print $ 1' - $ 6} 'Datei' – 123
durchgeführt werden perl 'perl -ne 'drucke" $ 1 - $ 2 \ n "wenn /([^,]+).*, ([[: alnum:] ._-] + @ [[: alnum:] ._-] +)/'' – 123
Danke! Das ist praktisch, ich denke, ich werde mit diesem Ansatz gehen. – Dronzil