免费注册 查看新帖 |

Chinaunix

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

怎样实现比较两个文件中的某几个域相等? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-10-21 12:56 |只看该作者 |倒序浏览
有文件aaa.lst
drwxrwx---   2 newepr   group        512 Oct  8 09:15 4423000020051004
drwxrwx---   2 newepr   group       2048 Oct 18 08:07 4423000020051006
drwxrwx---   2 newepr   group        512 Oct  9 11:25 4423000020051008
drwxrwx---   2 newepr   group        512 Oct 20 15:49 4423000020051009
drwxrwx---   2 newepr   group        512 Oct 18 09:06 4423000020051013
文件bbb.lst
Oct 18

如果文件aaa的$6、$7,分别等于bbb.lst的$1、$2,那么进入aaa.lst 的$9的目录
请教各位高手。

论坛徽章:
0
2 [报告]
发表于 2005-10-24 22:51 |只看该作者

怎样实现比较两个文件中的某几个域相等?

可以考虑先将前一个文件中需要的数据$6,$7,$9存在数组中,然后比较。
如果后一个文件内容少,可以先将后一个文件存在数组中,然后比较。

论坛徽章:
0
3 [报告]
发表于 2005-10-25 00:11 |只看该作者

怎样实现比较两个文件中的某几个域相等?


  1. awk 'NR==FNR{b[1]=$1;b[2]=$2}NR!=FNR{if(b[1]==$6 && b[2]==$7){printf("cd %s\n",$9);exit}}' | sh
复制代码

论坛徽章:
0
4 [报告]
发表于 2005-10-25 08:17 |只看该作者

怎样实现比较两个文件中的某几个域相等?

[quote]原帖由 "wmjie"][/quote 发表:


awk 'NR==FNR{b[1]=$1;b[2]=$2}NR!=FNR{if(b[1]==$6 && b[2]==$7){printf("cd %s\n",$9);exit}}' | sh

我是菜鸟,上面这句话不是很理解,麻烦你能不能详细点。
在此谢谢了!

论坛徽章:
0
5 [报告]
发表于 2005-10-25 11:28 |只看该作者

怎样实现比较两个文件中的某几个域相等?

请教各位高手,如何解决该问题啊?小女子实在不才

论坛徽章:
0
6 [报告]
发表于 2005-10-25 22:25 |只看该作者

怎样实现比较两个文件中的某几个域相等?

原帖由 "suphone" 发表:
printf("cd %s\n",$9);exit}}' | sh

我是菜鸟,上面这句话不是很理解,麻烦你能不能详细点。
在此谢谢了!


就是按照你的要求来得:如果文件aaa的$6、$7,分别等于bbb.lst的$1、$2,那么进入aaa.lst 的$9的目录
请教各位高手。

如果NR==FNR就是在读第一文件bbb.lst把第一个域,第二个域分别放到数组b里
如果NR!=FNR就是在读第二个文件aaa.lst了,按照你的判断来,如果文件aaa的$6、$7,分别等于bbb.lst的$1、$2,那么打印 "cd $9" ,最后再加上 "|sh"就是在执行 刚才打印的内容了。

不好意思,上面的程序里我把两个文件忘记加了。


  1. awk 'NR==FNR{b[1]=$1;b[2]=$2}NR!=FNR{if(b[1]==$6 && b[2]==$7){printf("cd %s\n",$9);exit}}' bbb.lst aaa.lst | sh
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP