请教如何完成如下文本生成

357阅读 0评论2009-08-25 greendays
分类:

| | | | IT168安防监控频道全新上线
[] [] [] [] []

侠客




CU编号: 154082
注册:2004-4-24
最后登录: 2009-08-25
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-25 15:24 

一个目录下有 "option aaa.png" "option bbb.png" "option csf.png" ......

请教如何生成
ID=7000 file=“option aaa.png" name="IDI_OPTION_AAA"
ID=7001 file=“option bbb.png" name="IDI_OPTION_BBB"
ID=7002 file=“option csf.png" name="IDI_OPTION_CSF"



您对本贴的看法:
| | |
  帅哥 (狼烟)
天使
八十万色狼总教头



CU编号: 547805
注册:2007-4-5
最后登录: 2009-08-25
帖子:
精华:0







来自:北京
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-25 15:33 



CODE:
ls | awk -F"[ .]+" 'BEGIN{id=7000}{print "ID="id++,"file=\""$0"\"","name=\"IDI_"toupper($1)"_"toupper($2)"\""}'




您对本贴的看法:
| | |
  帅哥
精灵使



荣誉会员  
CU编号: 51102
注册:2003-4-9
最后登录: 2009-08-25
帖子:
精华:0







来自:北京、深圳
状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-25 15:37 

cd 你的目录
for i in *.png; do
  echo 'ID=7000 file="$i'" name="IDI_OPTION_AAA"'
done



您对本贴的看法:

__________________________________

IBM Certified Advanced DBA for DB2 UDB V8

我的博客: http://blog.chinaunix.net/index.php?blogId=739
欢迎访问,并请多多批评指正。
| | |
  帅哥
精灵使



荣誉会员  
CU编号: 51102
注册:2003-4-9
最后登录: 2009-08-25
帖子:
精华:0







来自:北京、深圳
状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-25 15:41 

看错了

cd 你的目录
ID=7000
for i in *.png; do
  echo 'ID='$ID' file="'$i'" name="IDI_OPTION_AAA"'
  ((ID+=1))
done



您对本贴的看法:

__________________________________

IBM Certified Advanced DBA for DB2 UDB V8

我的博客: http://blog.chinaunix.net/index.php?blogId=739
欢迎访问,并请多多批评指正。
| | |
  帅哥 (Tim)
法师


CU奥运火炬传递手2008
CU编号: 465018
注册:2006-9-13
最后登录: 2009-08-25
帖子:
精华:0







来自:长春
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-25 15:42 

回复 #4 beginner-bj 的帖子

IDI_OPTION_AAA

这个后面的 AAA 也是动态的。
:mrgreen:



您对本贴的看法:

__________________________________

记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的。
| | |
  帅哥
精灵使



荣誉会员  
CU编号: 51102
注册:2003-4-9
最后登录: 2009-08-25
帖子:
精华:0







来自:北京、深圳
状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-25 15:46 



QUOTE:
原帖由 ly5066113 于 2009-8-25 15:42 发表
IDI_OPTION_AAA

这个后面的 AAA 也是动态的。
:mrgreen:

晕,我又看漏了。谢谢提醒。

不写了,楼主自己看着办吧。



您对本贴的看法:

__________________________________

IBM Certified Advanced DBA for DB2 UDB V8

我的博客: http://blog.chinaunix.net/index.php?blogId=739
欢迎访问,并请多多批评指正。
| | |
  帅哥 (租房子的小朋友)
精灵王



CU编号: 636072
注册:2007-11-1
最后登录: 2009-08-25
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-25 15:49 

ls *png|awk '{op=toupper( gensub( /option *(.*).png/, "\\1" ,$0) ); printf "ID=%d file=\"%s\" name=\"IDI_OPTION_%s\"\n",7000+NR,$0,op}'



您对本贴的看法:

__________________________________

-----------------------------------------------------------------
GNU bash, version 3.1.17(6)-release (i686-pc-cygwin)


| | |
  帅哥
精灵王




CU编号: 5702
注册:2002-3-22
最后登录: 2009-08-25
帖子:
精华:







来自:陕西西安
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-25 16:13 

ls | awk '{++s[$0];id=7000} END {OFS="\t";for (i in s) {j=toupper(substr(i, 1, index(i, ".")-1));print "ID="id++,"file="i,name="IDI_OPTION_"j}}'



您对本贴的看法:
| | |

侠客




CU编号: 154082
注册:2004-4-24
最后登录: 2009-08-25
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-25 17:12 

回复 #2 kwokcn 的帖子

-F"[.]+" 这个分隔符什么意思啊



您对本贴的看法:
| | |
  帅哥 (狼烟)
天使
八十万色狼总教头



CU编号: 547805
注册:2007-4-5
最后登录: 2009-08-25
帖子:
精华:0







来自:北京
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-25 17:16 

回复 #9 ppshw 的帖子

还有个空格:[空格.]+
-F"[ .]+"
就是以(一个或多个)(空格或.)组成的字符串为分隔符。
只看你的举例,这个+其实没用。



您对本贴的看法:
| | | | IT168安防监控频道全新上线
[] [] [] [] []

侠客




CU编号: 154082
注册:2004-4-24
最后登录: 2009-08-25
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-25 17:19 

还有忘了说明一点,文件名可能有空格,在打印name栏时把空格变成_
名字不一定是option开头

有没有sed的例子



您对本贴的看法:
| | |

侠客




CU编号: 154082
注册:2004-4-24
最后登录: 2009-08-25
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-25 17:22 

回复 #10 kwokcn 的帖子

如果文件名里面空格数/位置都不定如何?



您对本贴的看法:
| | |
  帅哥 (狼烟)
天使
八十万色狼总教头



CU编号: 547805
注册:2007-4-5
最后登录: 2009-08-25
帖子:
精华:0







来自:北京
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-25 17:23 

回复 #12 ppshw 的帖子

不明白,给些能够涵盖文件名特征的例子出来。



您对本贴的看法:
| | |

侠客




CU编号: 154082
注册:2004-4-24
最后登录: 2009-08-25
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-25 17:29 

回复 #13 kwokcn 的帖子

任何可能名字的png,当然不会出现两个点
如果文件名中有空格如”xxx yyy zzz.png" 生成的name有如下形式 IDI_XXX_YYY_ZZZ



您对本贴的看法:
| | |
  帅哥
精灵使



荣誉会员  
CU编号: 51102
注册:2003-4-9
最后登录: 2009-08-25
帖子:
精华:0







来自:北京、深圳
状态:...在线...

[] [] [博客]


[]     顶部
发表于 2009-8-25 17:33 

i="xxx yyy option aaa.png"
echo IDI_${i%.*}|tr '[a-z ]' '[A-Z_]'

根据这个,自己改改4楼的脚本



您对本贴的看法:

__________________________________

IBM Certified Advanced DBA for DB2 UDB V8

我的博客: http://blog.chinaunix.net/index.php?blogId=739
欢迎访问,并请多多批评指正。
| | |

大天使



CU编号: 347943
注册:2005-12-11
最后登录: 2009-08-25
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-25 17:43 



CODE:
ls *.png | awk -F"." 'BEGIN{id=7000}{name="";for (j=1;j<=split($1,M," ");j++) name=name"_"toupper(M[j]);print "ID="id++,"file=\""$0"\"","name=\"IDI"name"\"";delete M}'




您对本贴的看法:

__________________________________

shell新手&&awk新手
http://blog.chinaunix.net/u3/91453/


| | |
  帅哥
光明使者




CU编号: 690903
注册:2008-4-13
最后登录: 2009-08-25
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]       顶部
发表于 2009-8-25 18:10 

回复 #1 ppshw 的帖子

ls -l | awk 'NR!=1{printf "ID=";printf "700"NR-2" ";printf "file=""#"$NF"#"; printf " name=""#""IDI_OPTION_"$NF"\n"}' | sed 's/#/"/g;s/\.png$//' | sed 's/...$/\U&\"/'

[ 本帖最后由 greendays 于 2009-8-25 18:12 编辑 ]



您对本贴的看法:
| | |
  帅哥 (狼烟)
天使
八十万色狼总教头



CU编号: 547805
注册:2007-4-5
最后登录: 2009-08-25
帖子:
精华:0







来自:北京
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-25 18:10 

回复 #14 ppshw 的帖子



CODE:
ls | awk -F\. 'BEGIN{id=7000}{print "ID="id++,"file=\""$0"\"","name=\"IDI_"toupper(gensub(" ","_","g",$1))"\""}'




您对本贴的看法:
| | |

侠客




CU编号: 154082
注册:2004-4-24
最后登录: 2009-08-25
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-8-25 18:37 

回复 #17 greendays 的帖子

多谢各位热心人乐,有没有ls|sed方式实现的



您对本贴的看法:
| | |
  帅哥
光明使者




CU编号: 690903
注册:2008-4-13
最后登录: 2009-08-25
帖子:
精华:0







状态:...在线...

[] [] [博客]


[]       顶部
发表于 2009-8-25 19:45 

回复 #19 ppshw 的帖子

ls | sed 's/option/"&/g;s/\.png/&\"/g;s/^/ID=700# file=/;s/ [a-z]\+\.png/&\U&/;s/ [A-Z]/\"&/;s/\.[A-Z]\+\"$//;s/[A-Z]\+$/name=\"IDI_OPTION_&\"/;' | awk -F'#' '{print $1NR-1,$2}'



您对本贴的看法:
| | |

» » »


查看积分策略说明快速回复主题
上一篇:求助:删除空文件夹
下一篇: 计算一个文件中某一列数的总和