fdiskコマンドから文字列を抽出する

fdiskコマンドから文字列を抽出する

fdisk -lで実行され/dev/sdbn実行されるシェルスクリプトを作成したいと思いますfdisk -l

抽出された単語を利用してにインストールしたいと思います/mnt

たとえば、

Disk identifier: 0x00000000

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

文字列のみを抽出するにはどうすればよいですか/dev/sdb1

答え1

努力する:

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

この-oオプションを使用すると、一致するgrepパターンのみが印刷されます。

修正する

外して欲しい/dev/sdaXなら

fdisk -l | grep -o '^/dev/sd[b-z][0-9]'

答え2

次のコマンドを使用します。 fdisk -l | awk '/\/dev\/sdb[0-9]/ {print $1}'

答え3

あなたはそれを使用することができますsed...

ディレクトリパスにが含まれているので、sedコマンドを次のように区切ること/にしました_(通常/どの記号を区切り記号として使用できます.)

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

答え4

ルートアクセス権を持たないユーザーは簡単な方法を使用できますls

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

必要に応じて正規表現を編集します。

修正する:@StéphaneChazelasが述べたように、デバイスファイルが存在しても基本デバイスの存在が確認されるわけではありません。代わりにクエリを実行する方が安全です/proc/partitions

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

関連情報