免费注册 查看新帖 |

Chinaunix

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

[文本处理] 比如某个元素,是否在数组(或者其他数据结构)中,如果在从数组(或者其他数据结... [复制链接]

论坛徽章:
3
fulanqi
日期:2016-06-17 17:54:25JAVA
日期:2016-10-25 16:18:31码神
日期:2017-03-28 10:27:34
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-11-15 16:30 |只看该作者 |倒序浏览
大神们,问个问题:比如某个元素,是否在数组(或者其他数据结构)中,如果在从数组(或者其他数据结构)中删除,最后输出数组(或者其他数据结构)中剩余的元素,怎么用shell实现

论坛徽章:
28
15-16赛季CBA联赛之八一
日期:2016-02-22 19:10:4215-16赛季CBA联赛之深圳
日期:2016-12-01 10:34:0415-16赛季CBA联赛之新疆
日期:2016-12-07 10:24:2915-16赛季CBA联赛之同曦
日期:2016-12-15 12:06:43CU十四周年纪念徽章
日期:2016-12-18 13:03:4415-16赛季CBA联赛之吉林
日期:2017-01-03 15:52:2515-16赛季CBA联赛之辽宁
日期:2017-01-04 14:58:2415-16赛季CBA联赛之辽宁
日期:2017-01-15 09:42:512016科比退役纪念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16赛季CBA联赛之上海
日期:2017-03-18 10:14:5415-16赛季CBA联赛之青岛
日期:2017-03-18 22:00:44
2 [报告]
发表于 2016-11-15 16:36 |只看该作者

举个例子? 测试数据 和 期望结果分别是怎样?

论坛徽章:
3
fulanqi
日期:2016-06-17 17:54:25JAVA
日期:2016-10-25 16:18:31码神
日期:2017-03-28 10:27:34
3 [报告]
发表于 2016-11-15 17:41 |只看该作者
比如
元素数据【a,b,c,d,f】
如果这个数据结构中有b和f
我想输出【a,c,d】

论坛徽章:
3
fulanqi
日期:2016-06-17 17:54:25JAVA
日期:2016-10-25 16:18:31码神
日期:2017-03-28 10:27:34
4 [报告]
发表于 2016-11-15 17:45 |只看该作者
我给你看看我的程序和运行结果
源程序:
#!/bin/bash
#export LANG=en_US.UTF-8
#Variables configuration
dir=/ftp


#获取当前时间
today_id=$(date +%Y%m%d)
#获取数据时间
if [ -z "$1" ]; then
day_id=$(date -d last-day +%Y%m%d)
else
day_id=$1
fi
echo 'today_id =' $today_id    '      day_id = ' $day_id

echo `date` "[INFO]  cheak datafile is begin start----------------------------------"


all_tables=('TM_BIZ_ZONE_D' 'TD_CHANNEL_BIZ_ZONE_RELA' 'TM_SALE_OUTLETS_D'
                                      'TM_OPERATORS_INFO_D' 'TM_SALE_STAFF_INFO_D' 'TM_CMPNY_CHNL_RELA_D' 'LDAPD_TM_TRMNL_CODE_D'
                                      'TF_CHANNEL_BUSI_STORE_RELA_D' 'TF_BUSI_STORE_INFO_D' 'TF_BUSI_STORE_BIZ_ZONE_RELA_D'
                                      'TF_BUSI_STORE_ATTR_D'
                                      'LDAPD_CSM_DEV' 'LDAPD_CSM_DEV4G' 'LDAPD_CSM_SALE_DEV'
                                      'LDAPD_CSM_ALL_SALE_DEV' 'LDAPD_CSM_ALL_SALE_DEV' 'LDAPD_CSM_ALL_TRMNL_SALE_DEV'
                                      'LDAPD_CSM_ALL_SALE_DEV_DVLP' 'LDAPD_TRMNL_SALE_QTY_CHNL' 'TA_TRMNL_QUATY_CHANNEL_D')

for filegz in ${dir}/*.${day_id}.*.DAT.gz; do
  if [ `date -r $filegz +%Y%m%d` -ge $today_id ];then
    #echo "filegz: " $filegz
    filegz_name=`basename $filegz`
    filegz_table_name=`echo $filegz_name | cut -d"." -f1`
    filegz_data_time=`echo $filegz_name|cut -d. -f3`
    echo $filegz_table_name "filegz_data_time" $filegz_data_time
        fi
#all_tables=(${all_tables[@]} wewawe)                add
#unset all_tables[1]                                 del

                        index=0
                        for table in ${all_tables[@]};do
                                #echo $table
                               
                                i_table=${all_tables[$index]}
                                if [[ '$filegz_table_name' = '$i_table' ]];then
                                        unset all_tables[index]
                                        break
                    fi
                    
                    let index+=1   
                        done
done

for table in ${all_tables[@]};do
        echo $table
done


运行结果:
其中带 filegz_data_time 20161114的是ftp服务器上存在的表数据文件,我想输出的是不存在的
LDAPD_CSM_ALL_SALE_DEV filegz_data_time 20161114
LDAPD_CSM_ALL_SALE_DEV_DVLP filegz_data_time 20161114
LDAPD_CSM_ALL_TRMNL_SALE_DEV filegz_data_time 20161114
LDAPD_CSM_ALL_TRMNL_SALE_DEV filegz_data_time 20161114
LDAPD_CSM_ALL_TRMNL_SALE_DEV filegz_data_time 20161114
LDAPD_CSM_DEV filegz_data_time 20161114
LDAPD_CSM_DEV4G filegz_data_time 20161114
LDAPD_CSM_SALE_DEV filegz_data_time 20161114
LDAPD_TM_TRMNL_CODE_D filegz_data_time 20161114
LDAPD_TRMNL_SALE_QTY_CHNL filegz_data_time 20161114
TD_CHANNEL_BIZ_ZONE_RELA filegz_data_time 20161114
TF_BUSI_STORE_ATTR_D filegz_data_time 20161114
TF_BUSI_STORE_BIZ_ZONE_RELA_D filegz_data_time 20161114
TF_BUSI_STORE_INFO_D filegz_data_time 20161114
TF_CHANNEL_BUSI_STORE_RELA_D filegz_data_time 20161114
TM_BIZ_ZONE_D filegz_data_time 20161114
TM_OPERATORS_INFO_D filegz_data_time 20161114
TM_SALE_OUTLETS_D filegz_data_time 20161114
TM_SALE_STAFF_INFO_D filegz_data_time 20161114
--------------------------------------------------------------------------------------------------------------------
TM_BIZ_ZONE_D
TD_CHANNEL_BIZ_ZONE_RELA
TM_SALE_OUTLETS_D
TM_OPERATORS_INFO_D
TM_SALE_STAFF_INFO_D
TM_CMPNY_CHNL_RELA_D
LDAPD_TM_TRMNL_CODE_D
TF_CHANNEL_BUSI_STORE_RELA_D
TF_BUSI_STORE_INFO_D
TF_BUSI_STORE_BIZ_ZONE_RELA_D
TF_BUSI_STORE_ATTR_D
LDAPD_CSM_DEV
LDAPD_CSM_DEV4G
LDAPD_CSM_SALE_DEV
LDAPD_CSM_ALL_SALE_DEV
LDAPD_CSM_ALL_SALE_DEV
LDAPD_CSM_ALL_TRMNL_SALE_DEV
LDAPD_CSM_ALL_SALE_DEV_DVLP
LDAPD_TRMNL_SALE_QTY_CHNL
TA_TRMNL_QUATY_CHANNEL_D


期望:只输出TA_TRMNL_QUATY_CHANNEL_D

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2016-10-26 16:19:04
5 [报告]
发表于 2016-11-15 18:30 |只看该作者
#!/usr/bin/env python
#coding=utf-8
l1 = ['a','b','c','d','e','f']
l2 = ['c','e']
for i in l2:
    if i in l1:
        l1.remove(i)
print l1
python的可以吗

论坛徽章:
3
fulanqi
日期:2016-06-17 17:54:25JAVA
日期:2016-10-25 16:18:31码神
日期:2017-03-28 10:27:34
6 [报告]
发表于 2016-11-15 18:38 |只看该作者
python的可以,但是上面获取ftp服务器文件那些我不会改写,你看的程序,能读懂啥意思的话,全部python改写

论坛徽章:
3
fulanqi
日期:2016-06-17 17:54:25JAVA
日期:2016-10-25 16:18:31码神
日期:2017-03-28 10:27:34
7 [报告]
发表于 2016-11-15 18:38 |只看该作者
回复 5# fh21_xuejinlian

看看的我shell脚本

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2016-10-26 16:19:04
8 [报告]
发表于 2016-11-16 09:42 |只看该作者
cat 1LDAPD_CSM_ALL_SALE_DEV filegz_data_time 20161114
LDAPD_CSM_ALL_SALE_DEV_DVLP filegz_data_time 20161114
LDAPD_CSM_ALL_TRMNL_SALE_DEV filegz_data_time 20161114
LDAPD_CSM_ALL_TRMNL_SALE_DEV filegz_data_time 20161114
LDAPD_CSM_ALL_TRMNL_SALE_DEV filegz_data_time 20161114
LDAPD_CSM_DEV filegz_data_time 20161114
LDAPD_CSM_DEV4G filegz_data_time 20161114
LDAPD_CSM_SALE_DEV filegz_data_time 20161114
LDAPD_TM_TRMNL_CODE_D filegz_data_time 20161114
LDAPD_TRMNL_SALE_QTY_CHNL filegz_data_time 20161114
TD_CHANNEL_BIZ_ZONE_RELA filegz_data_time 20161114
TF_BUSI_STORE_ATTR_D filegz_data_time 20161114
TF_BUSI_STORE_BIZ_ZONE_RELA_D filegz_data_time 20161114
TF_BUSI_STORE_INFO_D filegz_data_time 20161114
TF_CHANNEL_BUSI_STORE_RELA_D filegz_data_time 20161114
TM_BIZ_ZONE_D filegz_data_time 20161114
TM_OPERATORS_INFO_D filegz_data_time 20161114
TM_SALE_OUTLETS_D filegz_data_time 20161114
TM_SALE_STAFF_INFO_D filegz_data_time 20161114
cat 2TM_BIZ_ZONE_D
TD_CHANNEL_BIZ_ZONE_RELA
TM_SALE_OUTLETS_D
TM_OPERATORS_INFO_D
TM_SALE_STAFF_INFO_D
TM_CMPNY_CHNL_RELA_D
LDAPD_TM_TRMNL_CODE_D
TF_CHANNEL_BUSI_STORE_RELA_D
TF_BUSI_STORE_INFO_D
TF_BUSI_STORE_BIZ_ZONE_RELA_D
TF_BUSI_STORE_ATTR_D
LDAPD_CSM_DEV
LDAPD_CSM_DEV4G
LDAPD_CSM_SALE_DEV
LDAPD_CSM_ALL_SALE_DEV
LDAPD_CSM_ALL_SALE_DEV
LDAPD_CSM_ALL_TRMNL_SALE_DEV
LDAPD_CSM_ALL_SALE_DEV_DVLP
LDAPD_TRMNL_SALE_QTY_CHNL

awk  'NR==FNR{a[$1]=$1}!a[$1]{print $1}' 1 2
TM_CMPNY_CHNL_RELA_D
TA_TRMNL_QUATY_CHANNEL_D

论坛徽章:
1
15-16赛季CBA联赛之江苏
日期:2016-10-26 16:19:04
9 [报告]
发表于 2016-11-16 09:43 |只看该作者
  1. cat 1
  2. LDAPD_CSM_ALL_SALE_DEV filegz_data_time 20161114
  3. LDAPD_CSM_ALL_SALE_DEV_DVLP filegz_data_time 20161114
  4. LDAPD_CSM_ALL_TRMNL_SALE_DEV filegz_data_time 20161114
  5. LDAPD_CSM_ALL_TRMNL_SALE_DEV filegz_data_time 20161114
  6. LDAPD_CSM_ALL_TRMNL_SALE_DEV filegz_data_time 20161114
  7. LDAPD_CSM_DEV filegz_data_time 20161114
  8. LDAPD_CSM_DEV4G filegz_data_time 20161114
  9. LDAPD_CSM_SALE_DEV filegz_data_time 20161114
  10. LDAPD_TM_TRMNL_CODE_D filegz_data_time 20161114
  11. LDAPD_TRMNL_SALE_QTY_CHNL filegz_data_time 20161114
  12. TD_CHANNEL_BIZ_ZONE_RELA filegz_data_time 20161114
  13. TF_BUSI_STORE_ATTR_D filegz_data_time 20161114
  14. TF_BUSI_STORE_BIZ_ZONE_RELA_D filegz_data_time 20161114
  15. TF_BUSI_STORE_INFO_D filegz_data_time 20161114
  16. TF_CHANNEL_BUSI_STORE_RELA_D filegz_data_time 20161114
  17. TM_BIZ_ZONE_D filegz_data_time 20161114
  18. TM_OPERATORS_INFO_D filegz_data_time 20161114
  19. TM_SALE_OUTLETS_D filegz_data_time 20161114
  20. TM_SALE_STAFF_INFO_D filegz_data_time 20161114
  21. -----------------------------------
  22. cat 2
  23. TM_BIZ_ZONE_D
  24. TD_CHANNEL_BIZ_ZONE_RELA
  25. TM_SALE_OUTLETS_D
  26. TM_OPERATORS_INFO_D
  27. TM_SALE_STAFF_INFO_D
  28. TM_CMPNY_CHNL_RELA_D
  29. LDAPD_TM_TRMNL_CODE_D
  30. TF_CHANNEL_BUSI_STORE_RELA_D
  31. TF_BUSI_STORE_INFO_D
  32. TF_BUSI_STORE_BIZ_ZONE_RELA_D
  33. TF_BUSI_STORE_ATTR_D
  34. LDAPD_CSM_DEV
  35. LDAPD_CSM_DEV4G
  36. LDAPD_CSM_SALE_DEV
  37. LDAPD_CSM_ALL_SALE_DEV
  38. LDAPD_CSM_ALL_SALE_DEV
  39. LDAPD_CSM_ALL_TRMNL_SALE_DEV
  40. LDAPD_CSM_ALL_SALE_DEV_DVLP
  41. LDAPD_TRMNL_SALE_QTY_CHNL
  42. ---------------------------------------
  43. awk  'NR==FNR{a[$1]=$1}!a[$1]{print $1}' 1 2
  44. TM_CMPNY_CHNL_RELA_D
  45. TA_TRMNL_QUATY_CHANNEL_D
复制代码

论坛徽章:
3
fulanqi
日期:2016-06-17 17:54:25JAVA
日期:2016-10-25 16:18:31码神
日期:2017-03-28 10:27:34
10 [报告]
发表于 2016-11-16 10:26 |只看该作者
回复 9# fh21_xuejinlian

这样的话,我只能先把从ftp上获取的文件的东西存到一个文件中了,恩,也是一种解决方案,谢谢您了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP