J'ai récemment décidé que ça suffisait - j'allais apprendre à utiliser couramment grep. Cela fait trois heures et je suis déjà déconcerté par ce problème de jouet.
Je synchronise actuellement une matrice RAID5, dont la progression peut être surveillée en lisant /proc/mdstat
. La sortie de cat /proc/mdstat
est illustrée ci-dessous.
$ 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>
Pour le plaisir, je pensais que j'utiliserais watch
pour surveiller /proc/mdstat
en temps réel, diriger sa sortie vers grep et n'afficher que le temps restant estimé.
Mon approche est la suivante:
watch cat /proc/mdstat | grep finish=\d+\.\d | grep \d+\.\d
Je suis perplexe quant à la raison pour laquelle cela n'a produit aucune sortie. En fait, la première expression grep ne produit aucune sortie, même si elle semble fonctionner sur Regex101 .
Qu'est-ce que je fais mal?
\d
et toujours citer une expression régulière à l'intérieurgrep
. Voir la syntaxe d'expression régulière 'grep' .