去重,留时间最大的那条记录 使用LINUX shell 或是 awk 方面解决。不知有没有人知道。

不会武功的猪 发布于 2015/05/12 21:05
阅读 311
收藏 0
 2015-03-17 23:57:41|2
2015-03-17 23:57:52|5
2015-03-17 23:58:01|2
2015-03-18 23:57:21|1
2015-03-18 23:57:27|2
2015-03-18 23:57:32|2
2015-03-18 23:57:38|3
2015-03-18 23:57:52|4
2015-03-18 23:58:01|5
2015-03-18 23:58:07|5
2015-03-18 23:58:17|5
2015-03-18 23:58:45|2
2015-03-19 23:57:40|1
2015-03-19 23:57:41|1

去重,留时间最大的那条记录 
加载中
0
终曲
终曲

写法很多,我先给一个吧,假设数据在test.log里

cat test.log | sort -k1 -k2 -r -u | awk 'NR==1{print}'



0
eechen
eechen
awk是shell的强力工具,那么PHP也可以当做一个shell的强力工具嘛.
<?php
$txt = <<<EOF
2015-03-17 23:57:52|5
2015-03-17 23:58:01|2
2015-03-18 23:57:21|1
2015-03-18 23:57:27|2
2015-03-18 23:57:32|2
2015-03-18 23:57:38|3
2015-03-18 23:57:52|4
2015-03-18 23:58:01|5
2015-03-18 23:58:07|5
2015-03-18 23:58:17|5
2015-03-18 23:58:45|2
2015-03-19 23:57:40|1
2015-03-19 23:57:41|1
EOF;
$arr = explode("\n", $txt);
$arr2 = array();
foreach($arr as $k => $v) {
    $tmp = array();
    $tmp = explode('|', $v);
    $arr2[$k] = strtotime($tmp[0]);
}
$arr2 = array_unique($arr2); //去重
rsort($arr2); //由高到低排序.
print_r($arr2); //$arr2[0]就是最大值.
?>
0
eechen
eechen
PHP也可以像Perl那样作为自动化系统管理脚本:
$argv[]存储传递给PHP脚本的参数数组:
http://php.net/manual/zh/reserved.variables.php
PHP提供了众多文件系统操作函数,比如:
http://php.net/manual/zh/ref.filesystem.php
file_exists
file_get_contents
file_put_contents
is_readable
is_writable
is_executable
is_dir
mkdir
rmdir
chmod
PHP也可以像Shell那样很方便地用反撇号`或者shell_exec等调用系统命令,还可以很方便地用popen/proc_open打开管道非阻塞执行命令并获取返回的数据.关键是PHP还内置了超级无敌方便好用的关联数组(哈希表)以及一系列数组操作函数和字符串处理函数,这酸爽,不多说.
返回顶部
顶部