0

特定の列の内容を抽出しようとしていますが、列の書式設定にスペースが使用されているため、使用する特定の区切り文字がありません。

私が扱っているデータは、次の OS X コマンドの結果です。

diskutil list | grep 'Apple'

出力例:

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

抽出したい列はディスク名、つまり「Macintosh SSD」と「外部」です

4

3 に答える 3

4

代わりに、プロパティリストを使用diskutil list -plistして解析する必要があります。人間が読める形式の出力は、機械が読める形式ではなく、予想とは異なって見える場合があります(長い出力や広い端末ウィンドウに対応するために、列の境界が移動する可能性があります)。

于 2013-01-14T06:10:58.207 に答える
0

tr -s ' 'スペースを折りたたむ (絞る)ためにも使用できます。

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

または単に正規表現:

diskutil list | sed -En 's/^[ 0-9]+: +(Apple[^ ]+).+/\1/p'
于 2013-01-14T11:48:06.383 に答える
0

私の理解が正しければ、3番目からN番目-3までの単語を出力する必要があります。その場合、次の awk が実行されます。

gawk '{disk=""; for (i = 3; i <= NF-3; i++){disk=disk $i " "};print disk}'
于 2013-01-14T09:35:10.403 に答える