免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1531 | 回复: 4
打印 上一主题 下一主题

比较大小 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-10 22:58 |只看该作者 |倒序浏览
cat file

a  1234  44
b  1234  43

a  2323 33
b  2323  32

a  3233 3
b  3233  2

-----

以上文件第一列是固定的,第二列和第三列是不固定的。
现在想比较 a 行的第三个域 和b行的第三个域大小

结果:
如果a的第三列  小于 b的第三列 ,那么输出a 和 b 的记录到文件 result

[ 本帖最后由 peacock66 于 2009-9-11 10:13 编辑 ]

论坛徽章:
3
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:19
2 [报告]
发表于 2009-09-10 23:06 |只看该作者
要的结果是什么?两两比较的还是最后输出最大的a的第三域和最大的b的第三域,最好给出想要的例子结果

论坛徽章:
0
3 [报告]
发表于 2009-09-12 00:55 |只看该作者

回复 #1 peacock66 的帖子

sed '/^\s*$/d;$!N;s/\n/ %%%%%%/' urfile | awk '{if($3<$NF)print }' | sed 's/ %%%%%%/\n/'

论坛徽章:
0
4 [报告]
发表于 2009-09-12 00:56 |只看该作者

回复 #1 peacock66 的帖子

[jesse@localhost shell_scri]$ cat urfile
a  1234  44
b  1234  43

a  2323 33
b  2323  39

a  3233 3
b  3233  4
[jesse@localhost shell_scri]$ sed '/^\s*$/d;$!N;s/\n/ %%%%%%/' urfile | awk '{if($3<$NF)print }' | sed 's/ %%%%%%/\n/'
a  2323 33
b  2323  39
a  3233 3
b  3233  4

论坛徽章:
0
5 [报告]
发表于 2009-09-12 09:45 |只看该作者
#cat file.awk
BEGIN {aa=bb="NULL"}
{
        if($1=="a"){aa=$3;result[1]=$0}
        if($1=="b"){bb=$3;result[2]=$0}
        if(NF==0){aa=bb="NULL";next}
        if(aa=="NULL"||bb=="NULL")next
        if(aa<bb)printf ("%s\n%s\n",result[1],result[2])
}

#cat file
a  1234  44
b  1234  43

a  2323 33
b  2323  32

a  3233 3
b  3233  2

a  3233 1
b  3233  2

#awk -f file.awk file
a  3233 1
b  3233  2

如果要放入result文件中,在命令行重定向一下就成了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP