免费注册 查看新帖 |

Chinaunix

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

截取文件名中字符串的shell [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-28 10:17 |只看该作者 |倒序浏览
现有此种格式的文件名(VFILE):
11111111_a_b_c@163.com_22222222.txt
其中前9位(11111111_)和之后的13位(_22222222)+(.txt)为固定格式,(_)为分隔符,a_b_c@163.com为email地址。
要求从此类型文件名称中取出email字符串,我自己的做法是:
文件名字符串长度 = echo VFILE | awk '{printf("%d\n",length($1))}'
固定字符串长度 = 9+13=22
email长度(len_cnt) = 文件名字符串长度 - 固定字符串长度
则:
email = expr substr VFILE 10 $len_cnt

但是仅仅能想出这种方法而已,研究很久,希望大家能帮忙想出更多巧妙简洁的shell写法,抛砖引玉,多多指教,呵呵   

[ 本帖最后由 rockytom 于 2007-3-28 14:00 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-03-28 10:28 |只看该作者
echo "11111111_a_b_c@163.com_22222222.txt"|awk '{match($0,"[a-zA-Z][0-9a-zA-Z_]*@[0-9a-zA-Z-]+\.[a-zA-Z]+");printf("%s\n",substr($0,RSTART,RLENGTH));}'

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
3 [报告]
发表于 2007-03-28 10:35 |只看该作者
[waker@proxy ~]$ string="11111111_a_b_c@163.com_22222222.txt"
[waker@proxy ~]$ echo $string|sed 's/.\{9\}\(.*\).\{13\}/\1/'
a_b_c@163.com
[waker@proxy ~]$

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
4 [报告]
发表于 2007-03-28 10:40 |只看该作者
如果_是分割,直接用bash的功能好了
string="11111111_a_b_c@163.com_22222222.txt"
string=${string%_*}
echo ${string#*_}

论坛徽章:
0
5 [报告]
发表于 2007-03-28 13:42 |只看该作者
呵呵,这个问题的小难度就在于email中的"_"和整个字符串文件名的分隔符"_"容易混在一起导致错误,楼上几位的写法都很好,参考学习验证中!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP