Chinaunix
标题:
怎么取每月最晚的日期呢?
[打印本页]
作者:
alunfirst
时间:
2016-11-13 12:37
标题:
怎么取每月最晚的日期呢?
数据:
2015/1/20
2015/1/21
2015/1/22
2015/1/23
2015/2/11
2015/2/12
2015/2/13
2015/2/14
想得到:
2015/1/23
2015/2/14
作者:
sunzhiguolu
时间:
2016-11-13 13:48
回复
1#
alunfirst
你这个是顺序的日期吗?
作者:
zy86416779
时间:
2016-11-13 19:18
[root@CentOS_6 tmp]# cat 1.txt
2015/1/20
2015/1/23
2015/1/22
2015/2/14
2015/2/11
2015/1/21
2015/2/12
2015/2/13
[root@CentOS_6 tmp]# cat 1.awk
/\/1\//{
if($0>a[1]){
a[1]=$0
}
next
}
/\/2\//{
if($0>a[2]){
a[2]=$0
}
next
}
END{print a[1]; print a[2]}
[root@CentOS_6 tmp]# awk -f 1.awk 1.txt
2015/1/23
2015/2/14
复制代码
作者:
moperyblue
时间:
2016-11-13 20:18
awk -F/ '{a[$1$2]=$0>a[$1$2]?$0:a[$1$2]}END{for(i in a)print a[i]}' file
复制代码
作者:
jcdiy0601
时间:
2016-11-14 09:21
cat file |sort -n -t / -k 2|awk 'BEGIN{FS=OFS="/"}{a[$1OFS$2]=$3}END{for(i in a)print i,a[i]}'
复制代码
作者:
alunfirst
时间:
2016-11-14 14:08
moperyblue 发表于 2016-11-13 20:18
谢谢高手~~~~~~~~~
作者:
fh21_xuejinlian
时间:
2016-11-14 17:35
awk -F'/' '{$3>a[$1FS$2]?a[$1FS$2]=$3:a[$1FS$2]=a[$1FS$2]}END{for(i in a)print i"/"a[i]}' file
作者:
LIerWx
时间:
2016-11-15 10:24
cat file |awk 'BEGIN{FS=OFS="/"}{a[$1OFS$2]=$3}END{for(i in a)print i,a[i]}'
复制代码
简化5楼的
作者:
本友会机友会摄友会
时间:
2016-11-16 18:28
提示:
作者被禁止或删除 内容自动屏蔽
作者:
yebailin
时间:
2016-11-17 09:53
回复
4#
moperyblue
awk -F/ '{a[$1$2]=$0>a[$1$2]?$0:a[$1$2]}END{for(i in a)print a
}'
这个优先级是怎么看啊 a[$1$2]= $0>a[$1$2]?$0:a[$1$2] 这样么? 取大的 赋值给a[],=号优先级最低?
网上搜的,不知道对不对
awk 的数值运算符( 优先级由大到小排列) 运算符 说明
++ -- 增加与减少( 前置或后置)
^ ** 指数( 右结合性)
! + - 非、一元(unary) 加号、一元减号
* / % 乘、除、余数
+ - 加、减
< <= == != > >= 比较
&& 逻辑AND( 简写)
|| 逻辑OR( 简写)
?: 三元条件式
= += -= *= /= %= ^= **= 赋值( 右结合性)
作者:
moperyblue
时间:
2016-11-17 10:21
回复
10#
yebailin
a[$1$2]=$0>a[$1$2]?$0:a[$1$2]
<=>
if($0>a[$1$2]){
a[$1$2]=$0
}else{
a[$1$2]=a[$1$2]
}
可以是这样
awk -F/ '$0>a[$1$2]{a[$1$2]=$0}END{for(i in a)print a[i]}'
复制代码
作者:
sditmaner
时间:
2016-11-17 12:47
真是难得给力的帖子啊
作者:
聆雨淋夜
时间:
2016-11-17 13:12
#/usr/bin/env python
# -*- coding: utf-8 -*-
import sys,fileinput,re
dict1={}
for line in fileinput.input(sys.argv[1:]):
x= re.split("/",line.strip("\n"))
key='/'.join(x[:-1])
if key not in dict1:
dict1[key]=x[2:]
else:
dict1[key].append(x[2])
for key,value in dict1.items():
print key+"/"+max(value)
复制代码
$ python test.py file
2015/2/14
2015/1/23
作者:
关阴月飞
时间:
2016-11-18 11:06
sort -t / -k2n -k3nr urfile |awk -F/ '!a[$2]++'
复制代码
作者:
sunzhiguolu
时间:
2016-11-18 15:33
本帖最后由 sunzhiguolu 于 2016-11-18 15:39 编辑
perl -0pe 'BEGIN{$N=qr/\N*/;$n=qr/$N\n/;}{s!^(?:($N)/$n)(\1$n)*!$2!gm}' f
复制代码
作者:
moperyblue
时间:
2016-11-18 15:47
sort -t/ -k1n -k2n -k3nr file|awk -F/ '!a[$1$2]++'
sort -t/ -k1n -k2n -k3n file|sed -r 'N;\#((.+/){2}).*\n\1#!P;D'
复制代码
作者:
MClhuang
时间:
2016-11-22 16:59
回复
4#
moperyblue
大神,这里的>具体比较的什么呢?按照道理说应该a[$1$2]已经被赋值=$0了
作者:
moperyblue
时间:
2016-11-22 17:12
回复
17#
MClhuang
a[$1$2]保存的是每组中值最大的那条记录
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2