나는 최근에 충분하다고 결정했다. 나는 grep을 유창하게 사용하는 법을 배우려고했다. 3 시간이 지났고 이미이 장난감 문제에 시달리고 있습니다.
현재 RAID5 배열을 동기화하고 있는데, 진행률을 읽고 읽을 수 있습니다 /proc/mdstat
. 출력 cat /proc/mdstat
은 다음과 같습니다.
$ 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>
재미있게, 나는 실시간으로 watch
모니터링 /proc/mdstat
하고 grep에 출력을 파이프하고 남은 예상 시간 만 표시 하는 데 사용할 것이라고 생각 했습니다.
내 접근 방식은 다음과 같습니다.
watch cat /proc/mdstat | grep finish=\d+\.\d | grep \d+\.\d
이것이 왜 출력을 생성하지 못하는지에 대해 나는 충격을 받았습니다. 실제로 첫 번째 grep 표현식은 Regex101 에서 작동하는 것처럼 보이지만 출력을 생성하지 않습니다 .
내가 무엇을 잘못하고 있지?
\d
내부 정규 표현식을 사용 하고 항상 인용 할 수는 없습니다grep
. 'grep'정규식 구문을 참조하십시오 .