이 기사에서는 php 및 linux sort 명령을 사용하여 각각 파일 내용의 중복 제거 및 정렬을 수행하고 완전한 데모 코드를 제공합니다.
Write 1000000 숫자, 한 줄에 하나의 숫자
<?php $file = 'user_id.txt'; $num = 1000000; $tmp = ''; 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 = ''; } }?>
파일 줄 수 보기
wc -l user_id.txt 1000000 user_id.txt
을 구현합니다. 행 데이터가 1000000이므로 실행 중 메모리 부족을 방지하기 위해 PHP에서 사용할 수 있는 메모리는 256m로 설정됩니다.
<?php/** * 文件内容去重及排序 * @param String $source 源文件 * @param String $dest 目标文件 * @param String $order 排序顺序 * @param Int $sort_flag 排序类型 */function fileUniSort($source, $dest, $order='asc', $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, 'filter'); // 去重 $file_data_arr = array_flip($file_data_arr); $file_data_arr = array_flip($file_data_arr); // 排序 if($order=='asc'){ 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!=='0'){ return false; } return true; }// 设置可使用内存为256mini_set('memory_limit', '256m');$source = 'user_id.txt';$dest = 'php_sort_user_id.txt'; fileUniSort($source, $dest);?>
wc -l php_sort_user_id.txt 632042 php_sort_user_id.txt head php_sort_user_id.txt 012357891112...
형식:
sort [OPTION]... [FILE]...
매개변수 설명:
-u 중복 제거
-n 숫자 정렬 유형
-r 내림차순
-o 출력 파일 경로
sort를 사용하여 중복 제거 및 정렬 수행
sort -uno linux_sort_user_id.txt user_id.txt
중복 제거 및 정렬 보기 최종 파일
아아아아
요약: 파일 중복 제거 및 정렬은 php 또는 linux sort 명령을 사용하여 수행할 수 있습니다. 실행 시간은 크게 다르지 않지만 파일 작업의 경우 시스템 명령을 직접 사용하는 것이 더 쉽습니다.
php 및 linux sort 명령을 사용하여 각각 파일 내용의 중복 제거 및 정렬을 수행하고 완전한 데모 코드를 제공합니다.
위 내용은 파일 콘텐츠 중복 제거 및 정렬을 구현하기 위한 PHP용 샘플 코드 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!