2013-01-14 3 views
0

주어진 열의 내용을 추출하려고 시도하지만 작업 할 특정 구분 기호가 없도록 공백을 사용하여 열의 서식을 지정했습니다.bash : 특정 구분 기호가없는 열에 의한 명령 출력 분할

diskutil list | grep 'Apple' 

예 출력 :

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

I 추출 할 열이 디스크 이름, 즉

내가 함께 일하고 있어요 데이터는 다음과 같은 OS X의 명령의 결과입니다 "Macintosh SSD"및 "External"

+2

당신이 사용할 수는 '절단 -c'? –

답변

4

diskutil list -plist을 사용하고 대신 속성 목록을 구문 분석해야합니다. 사람이 읽을 수있는 출력물은 기계로 읽을 수있는 것이 아니며 예상보다 다르게 보일 수 있습니다 (열 경계가 길어지면 출력이 길거나 터미널 창을 넓게 조정할 수 있음).

+0

Like @ "사람이 읽을 수있는 출력은 기계가 읽을 수있는 것이 아닙니다" – anishsane

+0

감사합니다. 내가 원했던 대답이 아니었지만, 그 자리에있었습니다. – beej

0

정확하게 이해한다면 3 번째부터 Nth-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' 
관련 문제