免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1934 | 回复: 8

[文本处理] 请支援,把文件名的部分字段存到该文件的指定属性内 [复制链接]

论坛徽章:
0
发表于 2017-12-25 18:53 |显示全部楼层
文件名为:171001_17_1B1#低压NP03S01-PAN0111-进线1_间隔图.xml
              171022_17_1B1#低压NP03S01-PAN0118-母联_间隔图.xml
文件名的格式一致,长度不一致,我需要文件名的名字部分1B1#低压NP03S01-PAN0118-母联_间隔图,存放到文件的name属性下
文件的格式如下:
<?xml version = '1.0' encoding = 'GB2312'?>
<picture>
<property>
<name>1B1#低压NP03S01-PAN0111-进线1_间隔图</name>
  <class>2</class>
  <type>9</type>
  <stationid>17</stationid>
  <sequence>171001</sequence>
  <screensum>1</screensum>
  <backbmp></backbmp>
  <size>1920,1000</size>
  <backcol>154,154,154</backcol>
</property>

请大神帮助?

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
发表于 2017-12-25 20:58 |显示全部楼层
本帖最后由 wh7211 于 2017-12-25 21:00 编辑

回复 1# llony232


  1. cat 171001_17_1B1\#低压NP03S01-PAN0111-进线1_间隔图.xml
复制代码

输出:
<?xml version = '1.0' encoding = 'GB2312'?>
<picture>
<property>
<name>xxx</name>
  <class>2</class>
  <type>9</type>
  <stationid>17</stationid>
  <sequence>171001</sequence>
  <screensum>1</screensum>
  <backbmp></backbmp>
  <size>1920,1000</size>
  <backcol>154,154,154</backcol>
</property>

  1. awk '/<name>/{a=gensub("([0-9]+_){2}|.xml","","g",FILENAME);$0=gensub("(<name>).*(</name>)","\\1"a"\\2","g")}1' 171001_17_1B1\#低压NP03S01-PAN0111-进线1_间隔图.xml
复制代码

输出:
<?xml version = '1.0' encoding = 'GB2312'?>
<picture>
<property>
<name>1B1#低压NP03S01-PAN0111-进线1_间隔图</name>
  <class>2</class>
  <type>9</type>
  <stationid>17</stationid>
  <sequence>171001</sequence>
  <screensum>1</screensum>
  <backbmp></backbmp>
  <size>1920,1000</size>
  <backcol>154,154,154</backcol>
</property>

论坛徽章:
0
发表于 2017-12-26 11:14 |显示全部楼层
感谢大神的支持,但是没有满足我的要求,可能是我没有表述清楚,在此文件夹内有2百个左右的文件,我不想在脚本中体现具体的文件名,读入文件夹内符合所有的.xml文件,然后把文件名的部分放到name属性下,输出文件名+.name的文件awk '{if($1~/<name>/) {a=FILENAME;$1=("<name>"substr(a,11)</name>")}}{print > FILENAME“.name”}' *.xml
距离和我得到的结果相差name多了.xml

论坛徽章:
0
发表于 2017-12-26 11:15 |显示全部楼层
感谢大神的支持,但是没有满足我的要求,可能是我没有表述清楚,在此文件夹内有2百个左右的文件,我不想在脚本中体现具体的文件名,读入文件夹内所有的.xml文件,然后把文件名的部分放到name属性下,输出文件名+.name的文件awk '{if($1~/<name>/) {a=FILENAME;$1=("<name>"substr(a,11)</name>")}}{print > FILENAME“.name”}' *.xml
距离和我得到的结果相差name多了.xml

论坛徽章:
0
发表于 2017-12-26 11:15 |显示全部楼层
感谢大神的支持,但是没有满足我的要求,可能是我没有表述清楚,在此文件夹内有2百个左右的文件,我不想在脚本中体现具体的文件名,读入文件夹内所有的.xml文件,然后把文件名的部分放到name属性下,输出文件名+.name的文件
awk '{if($1~/<name>/) {a=FILENAME;$1=("<name>"substr(a,11)</name>")}}{print > FILENAME“.name”}' *.xml
距离和我得到的结果相差name多了.xml

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
发表于 2017-12-26 14:58 |显示全部楼层
本帖最后由 1cpuer 于 2017-12-28 13:51 编辑

回复 5# llony232

# ----  2017-12-26 14:55:49: 1514271349:0;  # awk '{if($1~/<name>/) {a=FILENAME;$1=("<name>"substr(a,11)"</name>")}}{print $1}' *.xml
<?xml
<picture>
<property>
<name>1B1#低压NP03S01-PAN0111-进线1_间隔图.xml</name>
<class>2</class>
<type>9</type>
<stationid>17</stationid>
<sequence>171001</sequence>
<screensum>1</screensum>
<backbmp></backbmp>
<size>1920,1000</size>
<backcol>154,154,154</backcol>
</property>


# [ /home/soio/1bs/awks ]
# ----  2017-12-26 14:55:51: 1514271351:0;  # awk '{if($1~/<name>/) {a=FILENAME;$1=("<name>"substr(a,11)"</name>")}}{print > FILENAME."name"}' *.xml
awk: 命令行:1: {if($1~/<name>/) {a=FILENAME;$1=("<name>"substr(a,11)"</name>")}}{print > FILENAME."name"}
awk: 命令行:1:                                                                                   ^ syntax error

######FILENAME."name" ##--"name"   是\w 单词 name 字符串



# awk '{if($1~/<name>/) {a=FILENAME;$1=("<name>"substr(a,11)"</name>")}}{print > FILENAME}' *.xml

论坛徽章:
0
发表于 2017-12-26 17:05 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2017-12-26 18:08 |显示全部楼层
回复 1# llony232

try this way ...

$ grep -C1 name 17*171001_17_1B1#低压NP03S01-PAN0111-进线1_间隔图.xml-<property>
171001_17_1B1#低压NP03S01-PAN0111-进线1_间隔图.xml:<name>...</name>
171001_17_1B1#低压NP03S01-PAN0111-进线1_间隔图.xml-  <class>2</class>
--
171022_17_1B1#低压NP03S01-PAN0118-母联_间隔图.xml-<property>
171022_17_1B1#低压NP03S01-PAN0118-母联_间隔图.xml:<name>...</name>
171022_17_1B1#低压NP03S01-PAN0118-母联_间隔图.xml-  <class>2</class>

$ perl -i -pe '{if(/<name>/){$f=$ARGV;$f=~s/.xml//;$f=~s/^\d+_\d+_//;s|(<name>).*?(</name>)|$1$f$2|}}' 17*

$ grep -C1 name 17*
171001_17_1B1#低压NP03S01-PAN0111-进线1_间隔图.xml-<property>
171001_17_1B1#低压NP03S01-PAN0111-进线1_间隔图.xml:<name>1B1#低压NP03S01-PAN0111-进线1_间隔图</name>
171001_17_1B1#低压NP03S01-PAN0111-进线1_间隔图.xml-  <class>2</class>
--
171022_17_1B1#低压NP03S01-PAN0118-母联_间隔图.xml-<property>
171022_17_1B1#低压NP03S01-PAN0118-母联_间隔图.xml:<name>1B1#低压NP03S01-PAN0118-母联_间隔图</name>
171022_17_1B1#低压NP03S01-PAN0118-母联_间隔图.xml-  <class>2</class>

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
发表于 2017-12-29 17:02 |显示全部楼层
回复 3# llony232


  1. awk '{a=gensub("([0-9]+_){2}|.xml","","g",FILENAME);$0=gensub("(<name>).*(</name>)","\\1"a"\\2","g")}{print>a".name"}' *.xml
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP