2016-12-02 17 views
0

fdisk -lを実行した後で、後でbashスクリプトで入力するボリュームグループ名を抽出できます。例の下:bashの変数に使用する出力を抽出する

fdisk -l | grep /dev/mapper/vg_palpatine 
Disk /dev/mapper/vg_palpatine-lv_root: 105.1 GB 
vgextend /dev/vg_$vg_name $partitioned_drive 

私は私の$vg_name変数としてfdisk -l出力と入力それのうちパルパティーンを抽出したいです。私はsed、cut、awkのようないくつかの異なるソリューションを提案してきましたが、私はそれらの経験があまりありません。これをどうやってやりますか?

答えて

0

あなたがこれを使用することができます:

vg_name=$(fdisk -l | grep /dev/mapper/vg_palpatine | sed -n "s/.*\/\(.*\)-.*/\1/p") 
vgextend /dev/$vg_name $partitioned_drive 
+0

grepの必要はありません。sedはうまく検索できます。 – 123

1

私たちができる唯一のボリューム名の入力文字列全体。

vg_name=$(fdisk -l | grep /dev/mapper/vg_palpatine | sed -rn 's/.*vg_(.+)-lv_root.*/\1/p') 

正規表現の説明: - >任意の数の文字

.*これを行うために、我々は(s///)を交換するために、第2の発現と正規表現のマッチングをsedをお願いします。

vg_(.+)-lv_root - 我々は、我々は代替として、唯一のボリューム名をキャプチャグループ1(\1)を使用し、全体の入力文字列に一致するように.*を使用してグループ1

として>ボリューム名をキャプチャします。

$vg_nameを別のスクリプトで使用する場合は、最初にexportにする必要があります。

関連する問題