Bash를 사용하여 명령 출력에서 ​​데이터를 추출하는 방법은 무엇입니까?

Bash를 사용하여 명령 출력에서 ​​데이터를 추출하는 방법은 무엇입니까?

저는 Linux를 처음 사용하며 이 출력에서 ​​"DRIVE GB"를 얻고 싶습니다.

[randall@home gdrive]$ drive quota 
Name: Randall D
Account type:   UNLIMITED
Bytes Used: 290959662516         (270.98GB)
Bytes Free: 10995116277760       (10.00TB)
Bytes InTrash:  0                    (0.00B)
Total Bytes:    11286075940276       (10.26TB)

* Space used by Google Services *
Service                              Bytes                               
DRIVE                                270.98GB                            
PHOTOS                               0.00B                               
GMAIL                                0.00B                               
Space used by all Google Apps        270.98GB 

DRIVE 270.98GB에서 "270.38"을 얻고 싶습니다. 여기에서 일부 게시물을 읽으면서 sed를 사용해 보았지만 제대로 작동하지 못했습니다.

답변1

drive quota | sed -n 's/^DRIVE[[:blank:]]\{1,\}\([0-9.]\{1,\}\).*/\1/p'

1개 이상의 십진수 시퀀스 또는 .줄 시작 부분에 1개 이상의 공백이 뒤에 오는 시퀀스를 추출합니다.DRIVE

sed해당 옵션을 지원 하면 -E훨씬 더 아름답습니다 .

drive quota | sed -En 's/^DRIVE[[:blank:]]+([0-9.]+).*/\1/p'

그럼에도 불구하고 다음을 사용할 수도 있습니다 perl.

drive quota | perl -lne 'print $1 if /^DRIVE\h+([\d.]+)/'

GNU를 사용할 때 grep(최근 \K) PCRE 지원으로 빌드할 때:

drive quota | grep -Po '^DRIVE\h+\K[\d.]+'

를 사용하면 awk다음 작업도 수행할 수 있습니다.

drive quota | awk '$1 == "DRIVE" {print 0+$2}'

관련 정보