ich mein Gehirn bin Abstich versucht, mit einem regulären Ausdruck kommen die in der Lage sein wird, die Daten, die ich möchte in diesem SMART Datenausgang ziehen:Regex Crafting SMART-Daten
Offline data collection status: (0x00) Offline data collection activity
was never started.
Auto Offline Data Collection: Disabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 139) seconds.
Offline data collection
capabilities: (0x73) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
No Offline surface scan supported.
Self-test supported.
Conveyance Self-test supported.
Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine
recommended polling time: ( 2) minutes.
Extended self-test routine
recommended polling time: (100) minutes.
Conveyance self-test routine
recommended polling time: ( 3) minutes.
SCT capabilities: (0x1081) SCT Status supported.
Die regex Ich habe kommen mit so weit ist:
/([^A-Za-z]?:)([\w\s\/().\-]+\.)/gm
Das Ziel meiner regex ist es, die "Werte" jeder "General SMART Values" von smartctl -a
Ausgabe zu erhalten. Das Problem ist, dass die Ausgabe auf eine bestimmte Art und Weise formatiert ist, die es schwierig macht, die gewünschten Werte in ein Array zu ziehen.
Ich bin in der Lage, nur die SMART-Werte Schlüssel wie Offline data collection status
oder Self-test execution status
zu ziehen, so jetzt arbeite ich an den Werten von jedem dieser Parameter ziehen. Das wäre etwas wie (139) seconds
oder (0x00) Offline data collection activity was never started.
Was den Schlüssel von Wert trennt, ist dieser Doppelpunkt gefolgt von einigen Leerzeichen. In einem der Werte befindet sich jedoch Text, der ebenfalls einen Doppelpunkt enthält, was das Capturen extrem schwierig macht. Ich muss alle folgenden Punkte erfassen, ohne versehentlich die nächsten Parameterwerte zu erfassen.
Offline data collection status: (0x00) Offline data collection activity
was never started.
Auto Offline Data Collection: Disabled.
Self-test execution status: ( 0) The previous self-test routine completed
without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 139) seconds.
Also von den oben genannten muss ich nur Folgendes erfassen.
(0x00) Offline data collection activity
was never started.
Auto Offline Data Collection: Disabled.
Ohne in zu gehen und Self-test execution status:
als Teil davon erfassen als dass die nächste Parameter Schlüssel.
Jede Hilfe von Gedanken zu dieser Situation wäre hilfreich.
FYI, die Sie verwenden Python Regex in Ihrem regex.com Ausdruck. Ich denke nicht, dass es in diesem Fall einen Unterschied macht, aber Python Regex! = Perl regex. – ThisSuitIsBlackNot
Ich weiß, es ist Python Regex auf dieser Website, ich habe keine Option für Perl zu sehen, aber wie Sie gesagt, wahrscheinlich keinen großen Unterschied hier, da die Regex-Ausdruck universell sein sollte. Wenn Sie eine Website haben, die dasselbe tut, aber für Perl regex anzeigt, lassen Sie es mich bitte wissen. –
@HuyNguyen Ich würde PCRE für Perl verwenden – Laurel