Chinaunix
标题:
如何求少的数据
[打印本页]
作者:
zhaopingzi
时间:
2020-03-18 11:36
标题:
如何求少的数据
a 1
a 2
a 4
a 6
a 8
a 19
b 2
b 5
b 7
b 10
结果
a 3,5,7,9-18
b 1,3-4,6,8-9
作者:
Looiml
时间:
2020-03-18 15:44
awk '{a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}' a.txt
复制代码
a 3,5,7,9-18
b 1,3-4,6,8-9
作者:
wh7211
时间:
2020-03-18 21:57
本帖最后由 wh7211 于 2020-03-18 22:51 编辑
回复
1#
zhaopingzi
cat 1
a 1
a 2
a 4
a 6
a 8
a 19
b 2
b 5
b 7
b 10
awk '{a[$1][$2]++;b[$1]=b[$1]>$2?b[$1]:$2}END{for(i in a){for(j=1;j<=b[i];j++){if(!a[i][j]){c=c?c:j;c=c<j?c:j;d=d>j?d:j}else{if(c&&c==d){e=e?e","c:c;c=j+1}else if(c&&c!=d){e=e?e","c"-"d:c"-"d;c=j+1}}};print i,e;c=d=e=""}}' 1
a 3,5,7,9-18
b 1,3-4,6,8-9
复制代码
作者:
zhaopingzi
时间:
2020-03-25 12:51
回复
2#
Looiml
$ awk '{a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}' a.txt
awk: {a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}
awk: ^ syntax error
awk: {a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}
awk: ^ syntax error
awk: {a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}
awk: ^ syntax error
awk: {a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}
awk: ^ syntax error
awk: {a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}
awk: ^ syntax error
awk: {a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}
awk: ^ syntax error
awk: {a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}
awk: ^ syntax error
awk: {a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}
awk: ^ syntax error
awk: {a[$1][$2];if($2>m[$1])m[$1]=$2}END{for(i in a){printf i" ";f=0;for(j=1;j<=m[i];j++)if(!(j in a[i])){if(f==0)printf j;if(f==1)printf "-";f++}else{if(f>1)printf j-1;if(f>0&&j<m[i])printf ",";f=0}print ""}}
awk: ^ syntax error
复制代码
作者:
zhaopingzi
时间:
2020-03-25 12:53
回复
3#
wh7211
$ awk '{a[$1][$2]++;b[$1]=b[$1]>$2?b[$1]
2}END{for(i in a){for(j=1;j<=b
;j++){if(!a
[j]){c=c?c:j;c=c<j?c:j;d=d>j?d:j}else{if(c&&c==d){e=e?e","c:c;c=j+1}else if(c&&c!=d){e=e?e","c"-"d:c"-"d;c=j+1}}};print i,e;c=d=e=""}}' a.txt
awk: {a[$1][$2]++;b[$1]=b[$1]>$2?b[$1]
2}END{for(i in a){for(j=1;j<=b
;j++){if(!a
[j]){c=c?c:j;c=c<j?c:j;d=d>j?d:j}else{if(c&&c==d){e=e?e","c:c;c=j+1}else if(c&&c!=d){e=e?e","c"-"d:c"-"d;c=j+1}}};print i,e;c=d=e=""}}
awk: ^ syntax error
awk: {a[$1][$2]++;b[$1]=b[$1]>$2?b[$1]
2}END{for(i in a){for(j=1;j<=b
;j++){if(!a
[j]){c=c?c:j;c=c<j?c:j;d=d>j?d:j}else{if(c&&c==d){e=e?e","c:c;c=j+1}else if(c&&c!=d){e=e?e","c"-"d:c"-"d;c=j+1}}};print i,e;c=d=e=""}}
awk: ^ syntax error
awk: {a[$1][$2]++;b[$1]=b[$1]>$2?b[$1]
2}END{for(i in a){for(j=1;j<=b
;j++){if(!a
[j]){c=c?c:j;c=c<j?c:j;d=d>j?d:j}else{if(c&&c==d){e=e?e","c:c;c=j+1}else if(c&&c!=d){e=e?e","c"-"d:c"-"d;c=j+1}}};print i,e;c=d=e=""}}
awk: ^ syntax error
作者:
wh7211
时间:
2020-03-25 14:47
本帖最后由 wh7211 于 2020-03-25 14:49 编辑
回复
5#
zhaopingzi
看一下awk版本:
awk --version
复制代码
作者:
zhaopingzi
时间:
2020-03-25 15:44
回复
6#
wh7211
-bash-3.2# awk --version
GNU Awk 3.1.5
Copyright (C) 1989, 1991-2005 Free Software Foundation.
作者:
zhaopingzi
时间:
2020-03-25 16:05
回复
3#
wh7211
# awk --version
GNU Awk 4.0.2 这个可以
作者:
zhaopingzi
时间:
2020-03-25 16:07
# awk --version
GNU Awk 4.0.2 这个可以
楼上两位的脚本都没问题
作者:
zhaopingzi
时间:
2020-04-16 13:56
回复
2#
Looiml
a c 1
a c 2
a c 4
a c 6
a c 8
a c 19
b d 2
b d 5
b d 7
b d 10
如何生成:
a c 3,5,7,9-18
b d 1,3-4,6,8-9
作者:
wh7211
时间:
2020-04-16 19:55
本帖最后由 wh7211 于 2020-04-16 19:57 编辑
回复
10#
zhaopingzi
awk '{a[$1" "$2][$3]++;b[$1" "$2]=b[$1" "$2]>$3?b[$1" "$2]:$3}END{for(i in a){for(j=1;j<=b[i];j++){if(!a[i][j]){c=c?c:j;c=c<j?c:j;d=d>j?d:j}else{if(c&&c==d){e=e?e","c:c;c=j+1}else if(c&&c!=d){e=e?e","c"-"d:c"-"d;c=j+1}}};print i,e;c=d=e=""}}' file
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2