> 백엔드 개발 > PHP 튜토리얼 > 파일 콘텐츠 중복 제거 및 관련 콘텐츠 정렬에 대한 자세한 설명

파일 콘텐츠 중복 제거 및 관련 콘텐츠 정렬에 대한 자세한 설명

jacklove
풀어 주다: 2023-03-30 21:58:02
원래의
1742명이 탐색했습니다.

이 기사에서는 phplinux sort 명령을 사용하여 각각 파일 내용의 중복 제거 및 정렬을 수행하고 완전한 데모 코드를 제공합니다.

1. 테스트 파일을 만듭니다

쓰기 1000000숫자, 한 줄에 하나의 숫자

<?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;;
    }
}?>
로그인 후 복사

파일 줄 수 보기

wc -l user_id.txt
 1000000 user_id.txt
로그인 후 복사

2.php를 사용하여 중복 제거 및 정렬을 구현합니다

1000000처리가 필요하기 때문입니다. 따라서 실행 중 메모리 부족을 방지하기 위해 PHP에서 사용 가능한 메모리를 256m으로 설정합니다.

<?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);?>
로그인 후 복사

중복 제거 및 정렬된 파일 보기

wc -l php_sort_user_id.txt 
  632042 php_sort_user_id.txt

head php_sort_user_id.txt 
012357891112...
로그인 후 복사

3. Linux 정렬 명령은 중복 제거 및 정렬을 구현합니다.

linux 정렬 명령은 텍스트 파일을 줄별로 정렬하는 데 사용됩니다

형식:

sort [OPTION]... [FILE]...
로그인 후 복사


매개변수 설명:

-u 중복 제거
-n 숫자 정렬 유형
-r 내림차순
-o 출력 파일 경로
sort를 사용하여 중복 제거 및 정렬 수행

sort -uno linux_sort_user_id.txt user_id.txt
로그인 후 복사

중복 제거 및 정렬 보기 최종 파일
아아아아

요약: 파일 중복 제거 및 정렬은 php 또는 linux sort 명령을 사용하여 수행할 수 있습니다. 실행 시간은 크게 다르지 않지만 파일 작업의 경우 시스템 명령을 직접 사용하는 것이 더 쉽습니다.

이 기사에서는

phplinux sort 명령을 사용하여 각각 파일 내용의 중복 제거 및 정렬을 수행하고 완전한 데모 코드를 제공합니다.

이 글에서는 중복 제거 및 파일 내용 정렬 관련 내용을 설명합니다. 자세한 내용은 PHP 중국어 웹사이트를 참고하세요.

관련 권장 사항:

mysql 대소문자 구분 구성 문제 해석

php를 사용하여 배열을 병합하고 키 값을 유지하는 방법

phpcurl을 사용하여 다중 프로세스 다운로드 파일 클래스를 구현하는 방법


위 내용은 파일 콘텐츠 중복 제거 및 관련 콘텐츠 정렬에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿