2012-05-10 4 views
0

私はこのファイルを持っており、それぞれの "ROBxx"のインスタンス数を数えたいと思います。ファイルには何千もの行が含まれます。トラフとカウントを行う最も簡単な方法は何ですか?トレーブファイルをループして選択したインスタンスを数えます

2012年5月8日午前11時15分49秒ROB52 4ミリメートル

2012年5月8日午前11時15分56秒ROB42 5ミリメートル

2012年5月8日午前11時15分59秒ROB30 4ミリメートル

2012年5月8日11 :16:01 ROB52 4ミリメートル

2012年5月8日午前11時16分04秒ROB42 2ミリメートル

2012年5月8日11時16分〇五秒ROB06 4mmの

2012年5月8日11時16分06秒ROB52 4ミリメートル

2012年5月8日11時16分10秒ROB52 4ミリメートル

2012年5月8日11時16分11秒ROB30 3ミリメートル

このファイルの結果の後にカウントは次のようになります。

ROB52:4

ROB42:2

ROB30:2

ROB06:1

ありがとう!

+0

グーグルするpreg_match()関数。 – bos

答えて

0

まず、2次元配列(またはリストなど)を文字列と整数で作成します。今度は、各行をループして以下を実行してください:

"ROBxx"文字列を切り取り、文字列として保存します。

文字列の2次元配列を確認します。あなたがそれを見つけたら、カウントを増やしてください。配列にまだない場合は、それを追加してカウントを1に設定します。

これが役に立ちます。

0
$string = file_get_contents(filename) 
$count = preg_match_all('/ROB[0-9]{2}/', $string, $aMatches); 
+0

ああ - 非表示にしたい場合は "unset($ aMatches)" - メモリを解放してください。それが大きすぎる場合は、その問題についても "unset($ string)"としてください。 – Robbie

1
$handle = fopen("input.txt", "r"); 
$hash = array(); 
if ($handle) { 
     while (($buffer = fgets($handle)) !== false) { 
       if(preg_match('/\b(ROB\d+)\b/',$buffer,$m)) { 
         $hash[$m[1]] = (isset($hash[$m[1]])?($hash[$m[1]]+1):1); 
       } 
     } 
     foreach($hash as $k=>$v) { 
       print "$k : $v\n"; 
     } 
} else { 
     // error openeing file. 
} 
+0

ありがとう!しかし、私はまた、処理するためのセカンド基準を持っています。 []内のものは、どうやってそれぞれのユニーク[]とXmmの最初のカウントができますか? 2012年4月27日午前九時40分12秒\t ROB43 \t [3] \t 3ミリメートル 2012年4月27日九時40分13秒\t ROB52 \t [3] \t 3ミリメートル 2012年4月27日9時40分14秒\t ROB10 \t [3] \t 3ミリメートル 2012年4月27日9時40分18秒\t ROB06 \t [15] 2012年4月27日9時40分21秒\t ROB42 \t [15] 2012年4月27日9時40分24秒\t ROB43 \t [3] \t 3ミリメートル 2012.04 .27 09:40:26 \t ROB42 \t [15] 2012.04。27午前9時40分28秒\t ROB43 \t [3] \t 3ミリメートル 2012年4月27日9時40分31秒\t ROB10 \t [3] \t 3ミリメートル 2012年4月27日午前9時40分37秒\t ROB43 \t [3] 2012.04 \t 3ミリメートル 0.27 9時40分41秒\t ROB42 \t [15] 2012年4月27日9時40分42秒\t ROB10 \t [3] \t 3ミリメートル 2012年4月27日午前9時40分44秒\t ROB52 \t [4] \t 4ミリメートル –

関連する問題