2013-01-14 57 views
0

我嘗試提取特定列的內容,但空間已被用於格式化列,所以我沒有特定的分隔符的工作。慶典:分體式輸出命令的按列沒有具體的分隔符

我正在使用的數據是以下OS X命令的結果:

diskutil list | grep 'Apple' 

輸出示例:

2:     Apple_HFS Macintosh SSD   511.8 GB disk0s2 
    2:     Apple_HFS External    79.7 GB disk1s2 

我想提取的列是磁盤名,即「蘋果SSD」和「外部」

+2

您可以用'切-c'? –

回答

4

您應該使用diskutil list -plist和解析屬性列表來代替。人類可讀輸出不意味着是機器可讀的,且比預期(列邊界可以移動以容納長輸出或寬終端窗口,等等)可能看起來不同。

+0

像@「人類可讀的輸出並不意味着是機器可讀」 – anishsane

+0

謝謝。這不是我所希望的答案,但它是現貨。 – beej

0

如果我理解正確的話,你需要從第3至第N級3打印的話。如果是的話,下面的awk將做到:

gawk '{disk=""; for (i = 3; i <= NF-3; i++){disk=disk $i " "};print disk}' 
0

你也可以使用tr -s ' '崩潰(擠)空間:

diskutil list | tr -s ' ' | cut -d ' ' -f 3 | grep Apple 

或者只是正則表達式:

diskutil list | sed -En 's/^[ 0-9]+: +(Apple[^ ]+).+/\1/p'