Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Mit einen Shell script bestimmte Werte aus einer Datei auslesen

Frage Entwicklung Batch & Shell

Mitglied: tommhii

tommhii (Level 1) - Jetzt verbinden

16.01.2012, aktualisiert 17:29 Uhr, 5951 Aufrufe, 6 Kommentare

Hallo, ich möchte aus einer log Datei bestimmte Wert mit Hilfe eines Linux Scriptes auslesen, die ich dann in eine andere Datei schreibe, von wo sie weiter verarbeitet werden soll.

Hallo ich habe ein Prog. was täglich läuft und mir eine log. Datei schreibt. In dieser Log Datei stehen unter anderen einige Werte die ich weiterverarbeiten will.
Die folgenden Zeilen befinden sich in der log Datei und nur die will ich auslesen. Ich will die verbrauchte Zeit der Aufrufe auswerten.




10759' 'OTHERS '-Aufrufe benötigten '0:572.921.999' Sek.
10273' 'SELECT '-Aufrufe benötigten '8:787.561.000' Sek.
2' 'EXECUTE '-Aufrufe benötigten '3:993.116.999' Sek.
0' 'UPDATE '-Aufrufe benötigten '0:000.000.000' Sek.
0' 'DELETE '-Aufrufe benötigten '0:000.000.000' Sek.
0' 'INSERT '-Aufrufe benötigten '0:000.000.000' Sek.
153248' 'READ '-Aufrufe benötigten '7:818.841.000' Sek.
10907' 'CLOSESTMT '-Aufrufe benötigten '0:400.665.999' Sek.
233' 'TRANSACT '-Aufrufe benötigten '0:013.992.999' Sek.
Größter Zeitverbrauch bei einem DB-Aufruf war: '60:278.984.000'.
Datenbank geschlossen, Zeitverbrauch komplett: '476:498.166.000' Sekunden.

Nur diese Zeilen brauche ich nur aus der Logdatei.
Kann mir jemand vielleicht einen Lösungsansatz geben

Gruß Tommhii
Mitglied: LumenAlbum
17.01.2012 um 00:13 Uhr
Hallo Tommhii,

wie meinst du das genau?
Möchtest du aus den obigen Zeilen die Sekunden extrahieren?

Sowas ließe sich dann in batch mit "tokens" und "delims" lösen: z.B.

01.
 for /f "tokens=5 delims='" %%i in (temp.log) do @ECHO %%i 
Das würde bei deinen geposteten Zeilen dann folgende Ausgabe liefern:

0:572.921.999
8:787.561.000
3:993.116.999
0:000.000.000
0:000.000.000
0:000.000.000
7:818.841.000
0:400.665.999
0:013.992.999

Für die letzten beiden Zeilen (davon ausgehend das der Aufbau immer gleich ist) müsste man dies natürlich entsprechend anpassen.

Oder willst du was ganz anderes und möchtest innerhalb einer größeren log-Datei die Zeilen herausfiltern, die oben genannte Angaben enthalten?

Gruß
LumenAlbum
Bitte warten ..
Mitglied: tommhii
17.01.2012 um 11:28 Uhr
Danke dir für deine schnelle Antwort.


ich wollte davor noch die Begriffe stehen haben z.B.
10759 OTHERS 0:572.921.999 sek
10273 SELECT 8:787.561.000 sek
.
.
.
usw. und den Output in eine neue Datei schreiben. Wie gesagt da die log Datei auf einer Linux maschine entsteht muss dieses Script auch da laufen.




Gruß tommhii
Bitte warten ..
Mitglied: LumenAlbum
18.01.2012 um 00:14 Uhr
Sorry, hatte den Text in der blauen Überschrift (wo du erwähnst das es um Linux geht) übersehen.

Vielleicht findet sich hier noch jemand der sich mit der Linux bash auskennt - ich habe fast nur mit Windows zu tun.

Möglich wäre natürlich auch noch "Java" als Programmiersprache, die auch unter Linux benutzt werden kann, wenn dem nichts entgegensteht (kann ja sein, dass es auf jeden Fall ein Shell Skript sein soll)

Gruß
LumenAlbum
Bitte warten ..
Mitglied: tommhii
18.01.2012 um 07:55 Uhr
Kein Problem, ich danke dir trotzdem erstmal dafür das du mir einen schnellen Lösungsansatz gegeben hast .
Aber vielleicht findet sich ja hier noch jemand der eine Idee ha wie man dies umsetzen kann.


Gruß Tommhii
Bitte warten ..
Mitglied: LumenAlbum
19.01.2012 um 23:45 Uhr
Wäre Java denn eine Option? Oder soll es unbedingt die Linux Shell sein?

Mit deinem log-Posting und unter der Bedingung, dass die log-Datei immer genau nach diesem Schema aufgebaut ist und die Anzahl der Zeilen gleich ist, wäre eine Möglichkeit in Java:

01.
import java.io.BufferedReader; 
02.
import java.io.FileNotFoundException; 
03.
import java.io.FileReader; 
04.
import java.io.IOException; 
05.
 
06.
public class StringParse 
07.
08.
 
09.
	public static void main(String[] args) 
10.
11.
		 
12.
		try 
13.
14.
			String input = ""; 
15.
			String[] parts; 
16.
			BufferedReader reader = new BufferedReader(new FileReader("test.txt")); 
17.
			 
18.
			for (int i = 0; i < 9; i++) 
19.
20.
				input = reader.readLine(); 
21.
				parts = input.split("'"); 
22.
				System.out.println(parts[0] + " " + parts[2] + parts[4] + " Sek."); 
23.
24.
			 
25.
			for (int i = 0; i < 2; i++) 
26.
27.
				input = reader.readLine(); 
28.
				parts = input.split("'"); 
29.
				System.out.println(parts[0].substring(0, 21) + " " + parts[1] + " Sek."); 
30.
31.
			 
32.
		} catch (FileNotFoundException e) 
33.
34.
			e.printStackTrace(); 
35.
			 
36.
		} catch (IOException e) 
37.
38.
			e.printStackTrace(); 
39.
40.
		 
41.
42.
}
Output:

10759 OTHERS 0:572.921.999 Sek.
10273 SELECT 8:787.561.000 Sek.
2 EXECUTE 3:993.116.999 Sek.
0 UPDATE 0:000.000.000 Sek.
0 DELETE 0:000.000.000 Sek.
0 INSERT 0:000.000.000 Sek.
153248 READ 7:818.841.000 Sek.
10907 CLOSESTMT 0:400.665.999 Sek.
233 TRANSACT 0:013.992.999 Sek.
Größter Zeitverbrauch 60:278.984.000 Sek.
Datenbank geschlossen 476:498.166.000 Sek.

Allerdings weiß ich nicht ob das für dich in Frage kommt.

Liebe Grüße
LumenAlbum
Bitte warten ..
Mitglied: tommhii
20.01.2012 um 14:13 Uhr
hallo Lumen,
danke dir erstmal, die Log Datei enthält vorne weg und auch nach dem Ausschnitt, den ich hier gepostet habe noch einige Zeilen die ich nicht gebrauchen kann. Diese Zeilen sind nicht immer gleich, es können mal 20 zeilen davor kommen oder auch mehr, genauso ist es nach dem Ausschnitt den ich nur brauch. Ich will sagen die zeilen die ich auslesen will stehen zwar immer zusammen in einen Block wie ich es gepostet habe, aber nie an der selben Stelle in der Log datei.

Ich habe mir überlegt diese Log Datei auf eine Windows maschine zu transferieren und ein script als Dos Batch zu erstellen.
Java wollte ich eigentlich nicht nutzen.

Aber trotzdem erst mal vielen Dank.

Ich bin natürlich für jeden Tip Dankbar.

Grüße Tommhi
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Microsoft Office
Excel Dateien durchsuchen und Werte einzeln in neue Excel Datei auslesen (1)

Frage von krischanii zum Thema Microsoft Office ...

Batch & Shell
Script zum XML Datei Umschreiben (12)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
Bash Script soll neue Datei erzeugen (2)

Frage von SpeakerST zum Thema Batch & Shell ...

Batch & Shell
gelöst PowerShell, Log Datei auslesen, bei Änderungen E-Mail senden (12)

Frage von swissbull zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...