Ich habe kürzlich entschieden, dass genug genug ist - ich würde lernen, grep fließend zu verwenden. Es sind alle drei Stunden vergangen und ich bin bereits verblüfft über dieses Spielzeugproblem.
Ich synchronisiere derzeit ein RAID5-Array, dessen Fortschritt durch Lesen überwacht werden kann /proc/mdstat
. Die Ausgabe von cat /proc/mdstat
ist unten gezeigt.
$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sda4[0] sdb4[1] sdc4[2]
5858765824 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
[=============>.......] resync = 67.3% (1972073120/2929382912) finish=205.7min speed=77537K/sec
md0 : active raid5 sda3[0] sdb3[1] sdc3[2]
998400 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
unused devices: <none>
Zum Spaß dachte ich, ich würde verwenden watch
, um /proc/mdstat
in Echtzeit zu überwachen , die Ausgabe in grep weiterzuleiten und nur die geschätzte verbleibende Zeit anzuzeigen.
Mein Ansatz ist wie folgt:
watch cat /proc/mdstat | grep finish=\d+\.\d | grep \d+\.\d
Ich bin ratlos, warum dies keine Ausgabe hervorbrachte. Tatsächlich erzeugt der erste grep-Ausdruck keine Ausgabe, obwohl er auf Regex101 zu funktionieren scheint .
Was mache ich falsch?
\d
regulären Ausdruck verwenden und immer zitierengrep
. Siehe Syntax für reguläre Ausdrücke 'grep' .Antworten:
Wenn Sie die Regex-Syntax verwenden möchten, benötigen Sie den Schalter -P mit grep. Schauen Sie sich den zuvor gestellten Gast hier an. Unterscheidet sich die Grep- Syntax von Regex?
quelle
grep
hat nicht die\d
Flucht, müssen Sie[0-9]
stattdessen verwenden.+
muss ohne den-E
Schalter entkommen .Das sollte funktionieren:
quelle
-P
ich mit dem Schalter Regexes auf eine Weise verwenden kann, mit der ich mich bereits recht wohl fühle. Ich stimme Ihrer Antwort jedoch immer noch zu, weil es eine gute Lösung ist. Ich werde das im Hinterkopf behalten! Vielen Dank!?, +, {, |, (, and )
dass Escapezeichen eine besondere Bedeutung haben.Verwenden Sie
sed
stattdessen, das hat bei mir funktioniert:quelle