Heim >Backend-Entwicklung >PHP-Tutorial >Ausführliche Erläuterung der Deduplizierung von Dateiinhalten und der Sortierung verwandter Inhalte

Ausführliche Erläuterung der Deduplizierung von Dateiinhalten und der Sortierung verwandter Inhalte

jacklove
jackloveOriginal
2018-06-08 17:08:261746Durchsuche

In diesem Artikel werden die Befehle php und linux sort zum Implementieren der Deduplizierung bzw. Sortierung von Dateiinhalten verwendet und ein vollständiger Demonstrationscode bereitgestellt.

1. Erstellen Sie eine Testdatei

Schreiben Sie 1000000Zahlen, eine Zahl pro Zeile

<?php$file = &#39;user_id.txt&#39;;$num = 1000000;$tmp = &#39;&#39;;for($i=0; $i<$num; $i++){    $tmp .= mt_rand(0,999999).PHP_EOL;    if($i>0 && $i%1000==0 || $i==$num-1){
        file_put_contents($file, $tmp, FILE_APPEND);        $tmp = &#39;&#39;;
    }
}?>

Zeigen Sie die Anzahl der Dateizeilen an

wc -l user_id.txt
 1000000 user_id.txt

2.php implementiert Deduplizierung und Sortierung

Da es 1000000 Datenzeilen verarbeiten muss, ist der für PHP verfügbare Speicher auf 256 m eingestellt, um Speicherverlust zu verhindern während der Ausführung unzureichend.

<?php/**
 * 文件内容去重及排序
 * @param String $source    源文件
 * @param String $dest      目标文件
 * @param String $order     排序顺序
 * @param Int    $sort_flag 排序类型
 */function fileUniSort($source, $dest, $order=&#39;asc&#39;, $sort_flag=SORT_NUMERIC){

    // 读取文件内容
    $file_data = file_get_contents($source);    // 文件内容按行分割为数组
    $file_data_arr = explode(PHP_EOL, $file_data);    // 去除空行数据
    $file_data_arr = array_filter($file_data_arr, &#39;filter&#39;);    // 去重
    $file_data_arr = array_flip($file_data_arr);    $file_data_arr = array_flip($file_data_arr);    // 排序
    if($order==&#39;asc&#39;){
        sort($file_data_arr, $sort_flag);
    }else{
        rsort($file_data_arr, $sort_flag);
    }    // 数组合拼为文件内容
    $file_data = implode(PHP_EOL, $file_data_arr).PHP_EOL;    // 写入文件
    file_put_contents($dest, $file_data, true);

}// 过滤空行function filter($data){
    if(!$data && $data!==&#39;0&#39;){        return false;
    }    return true;
}// 设置可使用内存为256mini_set(&#39;memory_limit&#39;, &#39;256m&#39;);$source = &#39;user_id.txt&#39;;$dest = &#39;php_sort_user_id.txt&#39;;

fileUniSort($source, $dest);?>

Deduplizierte und sortierte Dateien anzeigen

wc -l php_sort_user_id.txt 
  632042 php_sort_user_id.txt

head php_sort_user_id.txt 
012357891112...

3. Der Linux-Sortierbefehl implementiert die Deduplizierung und Sortierung

Der Linux-Sortierbefehl wird verwendet, um Textdateien nach Zeilen zu sortieren

Format:

sort [OPTION]... [FILE]...


Parameterbeschreibung:

-u Duplikate entfernen
-n Numerischer Sortiertyp
-r Absteigende Reihenfolge
-o Pfad zur Ausgabedatei

Verwenden Sie die Sortierung, um die Deduplizierung durchzuführen und Sortieren

sort -uno linux_sort_user_id.txt user_id.txt


Deduplizierte und sortierte Dateien anzeigen

wc -l linux_sort_user_id.txt 
  632042 linux_sort_user_id.txt

head linux_sort_user_id.txt 
012357891112...


Zusammenfassung: Die Deduplizierung und Sortierung von Dateien kann mit dem PHP- oder Linux-Sortierbefehl erreicht werden, und die Ausführungszeit beträgt Anders. Nicht groß, aber es wird empfohlen, dass es für Dateioperationen einfacher ist, Systembefehle direkt zu verwenden.

In diesem Artikel werden die Befehle php und linux sort verwendet, um die Deduplizierung bzw. Sortierung von Dateiinhalten zu erreichen, und einen vollständigen Demonstrationscode bereitstellen.

In diesem Artikel werden die zugehörigen Inhalte der Deduplizierung und Sortierung von Dateiinhalten erläutert. Weitere Informationen finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Interpretation von MySQL-Konfigurationsproblemen, bei denen die Groß-/Kleinschreibung beachtet wird

So verwenden Sie PHP, um Arrays zusammenzuführen und Schlüsselwerte beizubehalten

So verwenden Sie phpcurl, um Multiprozess-Download-Dateiklassen zu implementieren


Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Deduplizierung von Dateiinhalten und der Sortierung verwandter Inhalte. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn