免费注册 查看新帖 |

Chinaunix

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

跪求SHELL编程的高手帮我解决问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-28 11:11 |只看该作者 |倒序浏览
本帖最后由 jiang358519521 于 2011-07-28 16:11 编辑

那我就将问题描述清楚:
现在在目录下有两个文件:20110726  和20110727
20110726内容:
db2inst1.cdr_call_20110726:114981820
db2inst1.cdr_sms_20110726:51876560
db2inst1.cdr_gprs_20110726:92867823
db2inst1.cdr_gprs_net_20110726:543787
db2inst1.cdr_gi_call_dm:5693
db2inst1.cdr_ij_call_dm:6
db2inst1.cdr_in_call_dm:3521182
db2inst1.cdr_comp_call_ds:16712946
db2inst1.cdr_comp_sms_ds:4647396
db2inst1.cdr_hywg_sms_20110726:96719
db2inst1.cdr_in_gprs_dm:7274401
db2inst1.cdr_ipcard17951_dm:112
db2inst1.cdr_ipcard_dm:0
db2inst1.cdr_newbusi_ds:230434
db2inst1.cdr_wlan_dm:992
db2inst1.cdr_gprs_pda_20110726:487

20110727内容:
db2inst1.cdr_call_20110725:114744407
db2inst1.cdr_sms_20110725:51331459
db2inst1.cdr_gprs_20110725:109951418
db2inst1.cdr_gprs_net_20110725:535781
db2inst1.cdr_gi_call_dm:5955
db2inst1.cdr_ij_call_dm:6
db2inst1.cdr_in_call_dm:3518636
db2inst1.cdr_comp_call_ds:5750565
db2inst1.cdr_comp_sms_ds:4643422
db2inst1.cdr_hywg_sms_20110725:96925
db2inst1.cdr_in_gprs_dm:7112873
db2inst1.cdr_ipcard17951_dm:149
db2inst1.cdr_ipcard_dm:0
db2inst1.cdr_newbusi_ds:230471
db2inst1.cdr_wlan_dm:996
db2inst1.cdr_gprs_pda_20110725:476
jxcrm.dr_ismg_ni:271973
db2inst1.mb_szx_fullcard_20110725:14763
db2inst1.mb_ip_fullcard_20110725:17549
db2inst1.mb_integ_data_20110725:40811
db2inst1.mb_non_prov_sms_20110725:271973
db2inst1.dr_ismg_l_20110725:0
db2inst1.cdr_call_part_20110725:0
db2inst1.cdr_gprs_part_20110725:0

现在要将其中db2inst1.cdr_call_20110726:114981820的数据114981820抽取出来
            db2inst1.cdr_call_20110725:114744407的数据114744407抽取出来
      
     对这两个数据进行比对,一样就输出正常,不一样就不正常。
       还有将db2inst1.cdr_sms_20110726:51876560的数据51876560抽取出来
                    db2inst1.cdr_sms_20110725:51331459的数据51331459抽取出来

     对这两个数据进行比对,一样就输出正常,不一样就不正常。



对这两个数据进行比对

论坛徽章:
0
2 [报告]
发表于 2011-07-28 11:13 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2011-07-28 11:18 |只看该作者
ls -trl|grep "runallcdr20110725"
awk -F : '{if($1~/db2inst1.cdr_call_20110725/) print $2}'  runallcdr20110725|read b
看不懂,弄个文件列表 出来

论坛徽章:
0
4 [报告]
发表于 2011-07-28 11:25 |只看该作者
在一个目录下查找runallcdr20110725文件,并读取文件中表为db2inst1.cdr_call_20110725
的第二个域的值。

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
5 [报告]
发表于 2011-07-28 13:18 |只看该作者
回复 1# jiang358519521

try:
  1. b=`awk -F : '{if($1~/db2inst1.cdr_call_20110725/) print $2}'  runallcdr20110725`

  2. c=`awk -F : '{if($1~/db2inst1.cdr_call_20110726/) print $2}'  runallcdr20110726`
复制代码

论坛徽章:
0
6 [报告]
发表于 2011-07-28 13:33 |只看该作者
还是不行啊~~显示结果还是一样的~

论坛徽章:
0
7 [报告]
发表于 2011-07-28 14:10 |只看该作者
因为管道了之后产生了子shell,子shell中的变量不影响父shell环境变量bash、sh是不可以的.

  1. awk -F : '{if($1~/db2inst1.cdr_call_20110725/) print $2}'  runallcdr20110725|(read b;echo  "$b")
复制代码
或用zsh

  1. [root@Tim a]# cat runallcdr2011072*
  2. db2inst1.cdr_call_20110725:114744407
  3. db2inst1.cdr_call_20110726:114981820
  4. [root@Tim a]# cat a.sh
  5. #!/bin/zsh
  6. ls -trl|grep "runallcdr20110725"
  7. awk -F : '{if($1~/db2inst1.cdr_call_20110725/) print $2}'  runallcdr20110725|read b

  8. echo  "$b"

  9. ls -trl|grep "runallcdr20110726"
  10. awk -F : '{if($1~/db2inst1.cdr_call_20110726/) print $2}'  runallcdr20110726|read c

  11. echo "$c"

  12. echo "$b,$c"
  13. [root@Tim a]# ./a.sh   
  14. -rw-r--r-- 1 root root  37 Jul 28 14:01 runallcdr20110725
  15. 114744407
  16. -rw-r--r-- 1 root root  37 Jul 28 14:01 runallcdr20110726
  17. 114981820
  18. 114744407,114981820
复制代码

论坛徽章:
0
8 [报告]
发表于 2011-07-28 14:29 |只看该作者
那你知道怎么在bash shell中实现这个功能吗?抽取文件部分数据并可以进行比较

论坛徽章:
0
9 [报告]
发表于 2011-07-28 14:33 |只看该作者
回复 8# jiang358519521


    不知道你要干什么?

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
10 [报告]
发表于 2011-07-28 14:38 |只看该作者
因为那是一个子shell里的变量
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP