Bash Expression régulière - Ne semble pas correspondre à \ s, \ S, etc.

J'ai un script qui tente d'obtenir des blocs d'informations à partir de gparted.

Mon apparence des Données:

Disk /dev/sda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  316MB   315MB   primary  ext4            boot
 2      316MB   38.7GB  38.4GB  primary  ext4
 3      38.7GB  42.9GB  4228MB  primary  linux-swap(v1)

log4net.xml
Model: VMware Virtual disk (scsi)
Disk /dev/sdb: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  316MB   315MB   primary  ext4            boot
 5      316MB   38.7GB  38.4GB  primary  ext4
 6      38.7GB  42.9GB  4228MB  primary  linux-swap(v1)

- Je utiliser une regex pour briser ce en deux blocs de Disque

^De disque (/dev[\S]+):((?!Le disque)[\s\S])*

Cela fonctionne avec multiligne.

Quand j'ai tester cela dans un script bash, je ne semble pas correspondre \s, \S -- Ce que je fais mal?

Je suis en train de tester ce par le biais d'un script comme:

data=`cat disks.txt`
morematches=1
x=0
regex="^Disk (/dev[\S]+):((?!Disk)[\s\S])*"

if [[ $data =~ $regex ]]; then
echo "Matched"
while [ $morematches == 1 ]
do
        x=$[x+1]
        if [[ ${BASH_REMATCH[x]} != "" ]]; then
                echo $x "matched" ${BASH_REMATCH[x]}
        else
                echo $x "Did not match"
                morematches=0;
        fi

done

fi

Cependant, quand je marche à travers les tests de parties de l'expression régulière, Chaque fois que je correspond a \s \S, il ne fonctionne pas -- ce que je fais mal?

source d'informationauteur Yablargo