2012-05-25 61 views
5

我正在編寫一個bash腳本,它將執行命令並將值存儲在字符串變量中,現在我需要在某些字符後拆分字符串。有沒有辦法?怎麼把格式是有點像這個需要在特定數量的字符後在bash中拆分字符串

PV Name /dev/sda2 
    PV Size 10.39 GB 

這裏我需要在/ dev/SDA2和10.39 GB我不能使用分隔符(如果可能的話,只是獨自10.39),並在一個新的文件寫。我不能使用分隔符,因爲空間是第一次..我沒有做過多的bash腳本。有沒有辦法做到這一點?

+6

我不明白您的分隔符約束。不'awk'{print $ 3}''工作嗎?如果不是,那麼'$ 4'而不是'$ 3'呢? – mouviciel

回答

6
echo "${var:8}" 

將回顯$var開始於字符8(從零開始)的內容。

要脫掉東西從第一個空間:

data=${var:8} 
echo "${data%% *}" 
3

要獲得只有某些字符,請使用cut

$ echo '1234567' | cut -c2-5 
2345 

然而,你的情況awk看起來更好的選擇:

$ echo ' PV Size 10.39 GB' | awk '{ print $3 }' 
10.39 

它將文本讀取爲空格/製表符分隔列NS,所以它應該工作完全正常

2

你可以使用cut

$ echo "PV Name /dev/sda2" |cut -d " " -f 3 
/dev/sda2