私は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つ以上の10進数シーケンスまたは行の.
先頭に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}'