I recently decided that enough was enough -- I was going to learn to use grep fluently. It's been all of three hours and I'm already stumped by this toy problem.
I'm currently syncing a RAID5 array, the progress of which can be monitored by reading
/proc/mdstat. The output of
cat /proc/mdstat is shown below.
$ cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md1 : active raid5 sda4 sdb4 sdc4 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 sdb3 sdc3 998400 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU] unused devices: <none>
For fun, I thought I would use
watch to monitor
/proc/mdstat in real time, pipe it's output into grep, and show only the estimated remaining time.
My approach is as follows:
watch cat /proc/mdstat | grep finish=\d+\.\d | grep \d+\.\d
I'm stumped as to why this produced no output. In fact, the first grep expression produces no output, even though it seems to work on Regex101.
What am I doing wrong?
\dand always quote a regex inside
grep. See ‘grep’ regular expression syntax.