Explication détaillée de la déduplication du contenu des fichiers et du tri du contenu associé

jacklove
Libérer: 2023-03-30 21:58:02
original
1697 Les gens l'ont consulté

Cet article utilisera les commandes php et linux sort pour réaliser respectivement la déduplication et le tri du contenu des fichiers, et fournira un code de démonstration complet.

1. Créez un fichier de test

Écrivez 1000000 nombres, un nombre par ligne

<?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;;
    }
}?>
Copier après la connexion

Affichez le nombre de lignes dans le fichier

wc -l user_id.txt
 1000000 user_id.txt
Copier après la connexion
🎜>

2.php implémente la déduplication et le tri

Comme il doit traiter 1 000 000 lignes de données, la mémoire disponible pour php est définie sur 256 m

pour éviter une mémoire insuffisante lors de l'exécution.
<?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);?>
Copier après la connexion

Afficher les fichiers dédupliqués et triés
wc -l php_sort_user_id.txt 
  632042 php_sort_user_id.txt

head php_sort_user_id.txt 
012357891112...
Copier après la connexion

3. La commande Linux sort implémente la déduplication et le tri

La commande Linux sort est utilisée pour trier les fichiers texte Tri des lignes

Format :

sort [OPTION]... [FILE]...
Copier après la connexion


Description du paramètre :

-u
Déduplication-n
Type de tri numérique-r
Ordre décroissant-o
Chemin du fichier de sortie

Utiliser sort pour effectuer la déduplication et le tri
sort -uno linux_sort_user_id.txt user_id.txt
Copier après la connexion


Afficher les fichiers dédupliqués et triés
wc -l linux_sort_user_id.txt 
  632042 linux_sort_user_id.txt

head linux_sort_user_id.txt 
012357891112...
Copier après la connexion


Résumé : Ceci peut être réalisé à l'aide de la commande de tri php ou linux. le temps d'exécution de la déduplication et du tri des fichiers n'est pas très différent, mais il est recommandé que pour les opérations sur les fichiers, il soit plus facile d'utiliser directement les commandes système.

Cet article utilisera les commandes php et linux sort

pour réaliser respectivement la déduplication et le tri du contenu des fichiers, et fournira un code de démonstration complet.

Cet article explique le contenu associé à la déduplication et au tri du contenu des fichiers. Pour plus d'informations, veuillez faire attention au site Web PHP chinois.

Recommandations associées :

Interprétation des problèmes de configuration MySQL sensibles à la casse

Comment utiliser PHP pour fusionner des tableaux et conserver les valeurs clés

Comment utiliser phpcurl pour implémenter des classes de fichiers de téléchargement multi-processus


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal