免费注册 查看新帖 |

Chinaunix

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

[文本处理] shell截取文件第一行数字问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-14 17:24 |只看该作者 |倒序浏览
请教大神,如我有个文件a.txt,第一行为2881000002014081123501210490205020140811233000201408112344590000001469,最后10位为文件行数,我想截取最后10位中非0的字符串,应该怎么写shell语句呢?十分的感谢!

论坛徽章:
7
天秤座
日期:2014-08-07 13:56:30丑牛
日期:2014-08-27 20:34:21双鱼座
日期:2014-08-27 22:02:21天秤座
日期:2014-08-30 10:39:11双鱼座
日期:2014-09-21 20:07:532015年亚洲杯之日本
日期:2015-02-06 14:00:282015亚冠之大阪钢巴
日期:2015-11-02 14:50:19
2 [报告]
发表于 2014-08-14 17:32 |只看该作者
  1. grep -Po "\d{10}$" urfile | awk -F0 '{print $NF}'
复制代码

论坛徽章:
0
3 [报告]
发表于 2014-08-14 17:51 |只看该作者
回复 2# MeRcy_PM


    十分感谢,但我敲这个命令报错呢?是否可以写全点呢?打开文件并提取最后十位中非0的数字。十分的感谢 ,本人基础不是很好。

论坛徽章:
0
4 [报告]
发表于 2014-08-14 17:55 |只看该作者
本帖最后由 love_shift 于 2014-08-14 17:58 编辑
  1. egrep -o '[1-9]{1,10}$ file
复制代码

论坛徽章:
7
亥猪
日期:2013-10-10 17:00:29辰龙
日期:2013-10-12 16:23:19卯兔
日期:2013-11-18 17:01:27金牛座
日期:2014-09-09 10:17:052015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之柏太阳神
日期:2015-09-25 13:56:42数据库技术版块每日发帖之星
日期:2016-08-06 06:20:00
5 [报告]
发表于 2014-08-14 18:09 |只看该作者
目测下:
  1. awk -F"0" 'NR==1{print $NF}' a.txt
复制代码

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
6 [报告]
发表于 2014-08-14 18:17 |只看该作者
回复 1# lilyok12345


    exec 3<test; read -u3 a;echo ${a##*0}

论坛徽章:
7
天秤座
日期:2014-08-07 13:56:30丑牛
日期:2014-08-27 20:34:21双鱼座
日期:2014-08-27 22:02:21天秤座
日期:2014-08-30 10:39:11双鱼座
日期:2014-09-21 20:07:532015年亚洲杯之日本
日期:2015-02-06 14:00:282015亚冠之大阪钢巴
日期:2015-11-02 14:50:19
7 [报告]
发表于 2014-08-14 18:34 |只看该作者
回复 3# lilyok12345
报啥错。我没把a.txt带进去。。

   

论坛徽章:
0
8 [报告]
发表于 2014-08-14 18:49 |只看该作者
各位都用0当分隔符或者直接取连续的非0数字串 那如果是0000010123怎么办?个人觉得是不是应该把最前面连续的0去掉 从第一个非零的数开始往后的都是要的?
cat a.txt | sed 's/[0-9]*\([0-9]\{10\}\)$/\1/' | sed 's/0*\([1-9][0-9]*\)$/\1/'

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
9 [报告]
发表于 2014-08-14 19:01 |只看该作者
本帖最后由 dn833 于 2014-08-14 19:02 编辑
  1. awk --re-interval 'NR==1{a=gensub(/.*(.{10})/,"\\1",1);print a+0}'
复制代码

论坛徽章:
3
天蝎座
日期:2013-12-10 19:37:11酉鸡
日期:2014-08-04 20:05:38双鱼座
日期:2014-08-09 21:53:54
10 [报告]
发表于 2014-08-14 19:37 |只看该作者
回复 1# lilyok12345

try:

  1.     sed '1{s/.*\(.\{10\}\)$/\1/;s/0*//;q}' a.txt
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP