免费注册 查看新帖 |

Chinaunix

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

[文本处理] shell,求大神关于XML文件的栏位替代和文件移动 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-07-19 20:16 |只看该作者 |倒序浏览
小弟,最近在搞一个项目,需要用到shellscript来批量处理XML文件,这个方面很小白,特来贵地求救。

在unix FTP下,会不断触发产生很多XML文件,主要格式参照附件,处理要求是这样。
1:检查<item></item>中间内容,如果前3位是ALC,则先把<mpn/>修改为<mpn></mpn>,中间的值为<mpn1></mpn1>的一样,然后移动这个XML文件到另外的FTP 目录: FTP ALC
2:检查<item></item>中间内容,如果前3位是SKD,则先把<mpn/>修改为<mpn></mpn>,中间的值为<mpn1></mpn1>的一样,然后移动这个XML文件到另外的FTP 目录: FTP SKD
这样一直循环下去,一直到目录里的XML文件全部处理完毕。
谢谢!

shellscript.jpg (52.63 KB, 下载次数: 35)

shellscript.jpg

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
2 [报告]
发表于 2016-07-19 22:20 |只看该作者
处理 xml 方面的问题还挺多, 就是都贴半张图片!   

论坛徽章:
10
15-16赛季CBA联赛之同曦
日期:2016-06-11 19:22:4115-16赛季CBA联赛之深圳
日期:2020-05-31 16:13:5615-16赛季CBA联赛之同曦
日期:2020-01-28 12:42:47每日论坛发贴之星
日期:2016-08-09 06:20:00程序设计版块每日发帖之星
日期:2016-08-09 06:20:00每日论坛发贴之星
日期:2016-07-12 06:20:00程序设计版块每日发帖之星
日期:2016-07-12 06:20:00程序设计版块每日发帖之星
日期:2016-07-06 06:20:00程序设计版块每日发帖之星
日期:2016-07-04 06:20:0015-16赛季CBA联赛之佛山
日期:2021-02-26 09:33:41
3 [报告]
发表于 2016-07-19 22:37 |只看该作者
前排占楼、顺手摸一下楼上屁股- -

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
4 [报告]
发表于 2016-07-19 22:52 |只看该作者
前排占楼、顺手搔一下楼上屁股- -

论坛徽章:
0
5 [报告]
发表于 2016-07-20 08:54 |只看该作者
楼上,我知道你是大神高手,帮帮忙啊,江湖救急!

论坛徽章:
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
6 [报告]
发表于 2016-07-20 18:24 |只看该作者
本帖最后由 moperyblue 于 2016-07-20 18:26 编辑

1.sh:
  1. #! /bin/bash
  2. KEY="$1" #需要搜索的关键字 如: "<item>ALC"
  3. XML_FILES_PATH="$2" #xml文件所在路径. 如: "/root/t"
  4. FTP_TO_PATH="$3" #需要上传到的路径. 如: "/root/FTP_ALC"

  5. if [[ "$#" -ne 3 ]];then
  6.     echo "Usage:`bashname $0` key xml_files_path ftp_to_path"
  7.     exit
  8. fi


  9. for file in `grep -l "$KEY" $XML_FILES_PATH/*.xml`
  10. do
  11.         cp "$file" "$file".bak  #验证数据正确后可注释掉此行
  12.         sed -ri -e '/<mpn\/>/{:a;N;/<mpn1>/!ba;s/([^\n]*)(\n.*\n)(.*)/\3\2\3/}' -e{,}'s/mpn1/mpn/' "$file"
  13.         mv "$file" "$FTP_TO_PATH"
  14. done
复制代码
  1. ./1.sh "<item>ALC" /root/t /root/FTP_ALC
复制代码

论坛徽章:
0
7 [报告]
发表于 2016-07-22 08:59 |只看该作者
非常感谢楼上的,不过,我运行了一下,没有起是么作用!大侠,再帮忙检查一下这个脚本!

论坛徽章:
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
8 [报告]
发表于 2016-07-22 11:25 |只看该作者
又是一个 X-Y问题 ?

根据你提供的现有数据测试是没错的

提问:
1.能否提供含有ALC和SKD的完整数据?
2.文件中<mpn/>和<mpn1>XXXX</mpn1>是不是唯一?

论坛徽章:
0
9 [报告]
发表于 2016-07-25 22:23 |只看该作者
楼上的兄弟
1.能否提供含有ALC和SKD的完整数据?  
ALC和SKD是item的前缀,item有长有短的,前3位是前缀,用来表示项目号的

2:文件中<mpn/>和<mpn1>XXXX</mpn1>是不是唯一
这个都是唯一的!

论坛徽章:
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
10 [报告]
发表于 2016-07-26 11:35 |只看该作者
回复 9# 李寅


能否分别提供一份含有ALC和SKD的完整数据?  
文件是unix格式吗?
程序运行在什么系统?
脚本运行后有显示什么异常吗?
sh -x 1.sh 后是什么结果?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP