求助!多个有规律文件名合并的问题...
时间:2011-04-20
来源:互联网
ls:
obj_1_AB_1.30010578
obj_1_AB_1.30011321
obj_1_AB_1.30007541
obj_2_DE_1.30011122
obj_2_DE_2.30062001
obj_3_FA_1.30013520
obj_4_GI_1.30050026
obj_4_GI_2.30080100
.......
.......
obj_21_UO_1.30072990
obj_21_UO_2.30015980
obj_21_UO_3.30020015
obj_21_UO_4.30015620
obj_21_UO_5.30090121
==============================
想把它们合并:例如:
obj_1_AB_1.30010578
obj_1_AB_1.30011321
obj_1_AB_1.30007541 合并成:obj_1_AB.300
obj_2_DE_1.30011122
obj_2_DE_2.30062001 合并成:obj_2_DE.300
依次类推,把它们合并后得到文件名:
obj_1_AB.300
obj_2_DE.300
obj_3_FA.300
obj_4_GI.300
.......
.......
obj_21_UO.300
想用awk来做,该如何实现呢?一点思路都没有啊!请高人指点指点,谢谢大家!
作者: xiao_lin 发布时间: 2011-04-20
作者: xiao_lin 发布时间: 2011-04-20
回复 xiao_lin 晕,看错了
作者: yinyuemi 发布时间: 2011-04-20
试试这个:
- awk '{file=gensub(/([^.]*)\.(...).*/,"\\1.\\2",1,FILENAME);print >file}' *
作者: yinyuemi 发布时间: 2011-04-20
作者: xiao_lin 发布时间: 2011-04-20
作者: ywlscpl 发布时间: 2011-04-20
貌似我又理解错了,你是想合并文件,还是只是处理这几个文件名

作者: yinyuemi 发布时间: 2011-04-20
回复 yinyuemi
貌似我也理解错了?
作者: ywlscpl 发布时间: 2011-04-20
obj_1_AB_1.30010578
obj_1_AB_1.30011321
obj_1_AB_1.30007541 合并成:obj_1_AB.300
obj_2_DE_1.30011122
obj_2_DE_2.30062001 合并成:obj_2_DE.300
obj_3_FA_1.30013520 只有一个文件,那就变成 obj_3_FA.300好了
依次类推,谢谢了
作者: xiao_lin 发布时间: 2011-04-20
如果是合并文件的话,可以试试,
awk '{file=gensub(/([^.]*)\.(...).*/,"\\1.\\2",1,FILENAME);print >file}' obj*
作者: yinyuemi 发布时间: 2011-04-20
- ls obj* | awk -F '[_.]' '{while (getline l < $0) print l >$1"_"$2"_"$3"."substr($5,1,3)}'
作者: ywlscpl 发布时间: 2011-04-20
作者: qinyudd 发布时间: 2011-04-20
学习学习!
作者: yinyuemi 发布时间: 2011-04-20
ywlscpl 发表于 2011-04-20 15:07
大哥~不行呀!提示:
awk: Syntax error
at line 1 of program << {while (getline 1 < ... >>
context is
{while (getline 1 < $0 ) print 1 > >>> $1"_" <<<
awk: illegal statement
at line 1 of program << {while (getline 1 < ... >>
awk: bailing out
at line 1 of program << {while (getline 1 < ... >>
还请您多多费心,谢谢
作者: xiao_lin 发布时间: 2011-04-20
莫非你是sco unix系统
作者: ywlscpl 发布时间: 2011-04-20
作者: xiao_lin 发布时间: 2011-04-20
- ls obj* | awk -F '[_.]' '{while (getline l < $0) {n=$1"_"$2"_"$3"."substr($5,1,3);print l >n}}'
- awk '{split(FILENAME,m,"[_.]");n=m[1]"_"m[2]"_"m[3]"."substr(m[5],1,3);print >n}' obj*
作者: ywlscpl 发布时间: 2011-04-20
ywlscpl 发表于 2011-04-20 15:58
awk '{split(FILENAME,m,"[_.]");n=m[1]"_"m[2]"_"m[3]"."substr(m[5],1,3);print >n}' obj*
您太厉害了,这条完全符合要求,崇拜,感谢您热心回复,谢谢!
作者: xiao_lin 发布时间: 2011-04-20
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28