Extraindo uma string do comando fdisk

2

Eu quero escrever um script de shell, que executará fdisk -l e extrairá uma string /dev/sdbn da saída de fdisk -l .

Usando a palavra extraída, quero montá-la em /mnt .

Por exemplo:

Disk identifier: 0x00000000

Device     Boot    Start    End    Blocks    Id    System
/dev/sdb1    *         1    493    3956672    6     FAT16

Como faço para extrair apenas a string /dev/sdb1 ?

    
por Rahul 07.07.2014 / 10:57

5 respostas

3

Tente:

fdisk -l | grep -o '^/dev/sdb[0-9]'

A opção -o faz com que grep imprima apenas um padrão correspondente.

Atualizado

Se você quiser todos, exceto /dev/sdaX , pode usar:

fdisk -l | grep -o '^/dev/sd[b-z][0-9]'
    
por 07.07.2014 / 11:28
2

Use este comando: fdisk -l | awk '/\/dev\/sdb[0-9]/ {print $1}'

    
por 07.07.2014 / 11:21
0

Você pode usar sed ...

Como um caminho de diretório contém / , escolhi usar _ para delimitar o comando sed (embora um símbolo usualmente use / , any possa ser usado como delimitador).

fdisk -l | sed -n 's_^\(/dev/[^ ]*\) .*$__p'

    
por 07.07.2014 / 11:11
0

Tente isso para obter /dev/sdb1

fdisk -l | grep -w "/dev/sdb1" | awk '{print $1}'
    
por 07.07.2014 / 23:53
0

Para quem não tem acesso root, você pode usar um simples ls :

ls /dev/sd* | grep -o '/dev/sd[a-z][1-9]'

Edite a expressão regular como quiser.

ATUALIZAÇÃO: Como mencionado por @ StéphaneChazelas, a presença de arquivos de dispositivos não confirmará a existência do dispositivo subjacente. Seria mais seguro consultar /proc/partitions :

awk '$NF ~ /^sd[a-z][0-9]+/ {print "/dev/" $NF}' < /proc/partitions
    
por 11.10.2015 / 12:28