2016-12-06 3 views
1

私は以下の文字列をdfコマンドの出力に持っています。私は値存在する複数の整数から1つの整数値を抽出する方法

Javaの正規表現を使用して
8946732 

を抽出したい

$ df |grep data 
/dev/block/dm-1 11066964 2103848 8946732 20% /data 

、私は

(.*?\s{3}\d+.\d+) 

を試してみましたが、それは正常に動作していません。

+0

を参照していますが、スペース上のPythonのタグ –

+0

スプリットを持っているとキープ第4要素 – Toto

+0

@MosesKoledoye参考文献としてPython正規表現を使用することができます –

答えて

0

あなたの予想出力は固定インデックスに常にある場合は、あなたがこれを使用することができます。

>>> s = "/dev/block/dm-1 11066964 2103848 8946732 20% /data" 
>>> s.split()[3] 
'8946732' 

OK、正規表現を使用して要求されたとして、ここではそれはあなたがdfを求めることができ

>>> import re 
>>> re.search(r'(?is)(.*?\s+\d+\s+\d+\s+)(\d+)',s).group(2) 
'8946732' 
+0

正規表現を使用する必要があります –

+0

ここでは答えを編集しましたが、正規表現を使用しないことを強くお勧めします –

0

あるように--outputオプションを使用して特定の列を印刷する:

df --output=avail /dev/block/dm-1 | tail -n1 

tailコマンドは、ヘッダAvailを取り除くためのものです。

+0

このコマンドはAndroid用ではありません –

0

以下のように正規表現を使用して、それが2桁で非スペースのフォローと一致し、次の数字をキャプチャ

import re 
re.match('\S+\s+(?:\d+\s+){2}(\d+)', "/dev/block/dm-1 11066964 2103848 8946732 20% /data").group(1) 
# '8946372' 

は* Javaの正規表現を使用して* demo

関連する問題