免费注册 查看新帖 |

Chinaunix

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

[文本处理] 提一个需求,各位来试试? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-20 21:10 |只看该作者 |倒序浏览
本帖最后由 力哥丶 于 2012-12-20 21:50 编辑
  1. 在/tmp目录下:

  2. dir-li-ge-01.log

  3. dir_02-li-ge.log
复制代码
这样的文件还有很多,我想截取出文件的数字。但这个数字不是稳定的,

文件有时是下划线,有时是数字开头。有时是“-” ,但他们的.log不便。

看看各位能搞定不。

AWK:

第一个需求是:截取数字(数字的位置不是固定)

第二个需求是:除数字意外的内容,(数字不是固定的)


论坛徽章:
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
2 [报告]
发表于 2012-12-20 21:42 |只看该作者
  1. echo "dir-li-ge-01.log"|sed 's/[^0-9]//g'
复制代码
奉劝LZ还是仔细看看正则表达式和最简单的sed、awk吧。。。。。。否则天天被版主点名你脸不热嘛

论坛徽章:
0
3 [报告]
发表于 2012-12-20 21:54 |只看该作者
回复 2# dn833


    首先你只回答了我一个问题,

   其次,我说是AWK。

   你脸么红么 还装?

论坛徽章:
0
4 [报告]
发表于 2012-12-20 22:21 |只看该作者
  1. ls |awk -F[-_.] '{for(i=1;i<=NF;i++){if($i~/[0-9]+/)print $i}}'
复制代码
不简洁,坐等高手

论坛徽章:
0
5 [报告]
发表于 2012-12-20 22:24 |只看该作者
本帖最后由 力哥丶 于 2012-12-20 22:27 编辑

回复 4# udevu


    呵呵,

    ls 下面会有很多文件或者目录,但是下面可能还会有别的文件哦,但是我只是想要我上面文件的类型。


    文件的后缀是.log  前面的数字不是固定的位置,包含下划线和横杠、

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
6 [报告]
发表于 2012-12-20 22:59 |只看该作者
回复 5# 力哥丶
  1. ls *.log | xxoo
复制代码

论坛徽章:
0
7 [报告]
发表于 2012-12-20 23:29 |只看该作者
回复 6# Shell_HAT


    完善一下把:

   第一个需求:ls *.log | awk -F[-_.] '{for(i=1;i<=NF;i++){if($i~/[0-9]+/)

   第二个需求:ls *.log | awk -F[-_.] '{for(i=1;i<=NF;i++){if($i~/[^0-9]+/)printf $i}}'

论坛徽章:
0
8 [报告]
发表于 2012-12-20 23:37 |只看该作者
回复 6# Shell_HAT


    @Shell_HAT

      我想你

论坛徽章:
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 [报告]
发表于 2012-12-21 00:21 |只看该作者

  1. [root@ID ~]# awk -F '[^0-9]+' 'BEGIN{OFS=""}{$1=$1;print $0}' a
  2. 01
  3. [root@ID ~]# awk -F '[0-9]+' 'BEGIN{OFS=""}{$1=$1;print $0}' a
  4. dir-li-ge-.log
  5. [root@ID ~]# cat a
  6. dir-li-ge-01.log
复制代码
你这萌娃,非得让哥把你整到一丝不挂的地步吗???

论坛徽章:
0
10 [报告]
发表于 2012-12-21 00:44 |只看该作者
本帖最后由 力哥丶 于 2012-12-21 00:44 编辑

回复 9# dn833


    这么晚你不睡吓唬谁啊
  1. s *.log | awk -F '.[0-9]+' 'BEGIN{OFS=""}{$1=$1;print $0}'
复制代码
在[0-9]前面加个“.”会更好。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP