免费注册 查看新帖 |

Chinaunix

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

一个shell的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-18 15:42 |只看该作者 |倒序浏览
输入字符串如下:

abcdefg_higklmn.tar DOID://00000001/000B0131/00001000/00001000 10.81.103.147   Active     Active     Application
abcdefg_higklmn.tar DOID://00000001/000B0145/00001000/00001000 10.81.103.147  Active     Active     Application
说明:取其中的000B0131字段,并取十六进制的“0131”转化为十进制的数字输出结果放在字符串最前面.

输出结果形如:

0305 abcdefg_higklmn.tar DOID://00000001/000B0131/00001000/00001000 10.81.103.147   Active     Active     Application
0325 abcdefg_higklmn.tar DOID://00000001/000B0145/00001000/00001000 10.81.103.147  Active     Active     Application



请DX看看。

论坛徽章:
0
2 [报告]
发表于 2012-07-18 15:45 |只看该作者
取字段和计算都好办,怎么放回到原文件不好搞啊.
大神现身

论坛徽章:
0
3 [报告]
发表于 2012-07-18 16:08 |只看该作者
upupupupupupupupupupupupupupupupupup

论坛徽章:
0
4 [报告]
发表于 2012-07-18 16:18 |只看该作者
回复 1# wbbshen
  1. awk '{a=gensub(/.*B([0-9]+)\/.*/,"\\1","g",$0);printf("%04d ",strtonum("0x"a))}1' file
复制代码

论坛徽章:
0
5 [报告]
发表于 2012-07-18 16:37 |只看该作者
多谢kk5234 的gensub,没想到一句话就搞定了.
不过有个小问题,16进制是带ABCDEF的,我的例子中正好没有,当出现这种值的时候,结果有问题.

论坛徽章:
0
6 [报告]
发表于 2012-07-18 16:42 |只看该作者
回复 5# wbbshen


    那就改一下
  1. awk '{a=gensub(/.*B(\w+)\/.*/,"\\1","g",$0);printf("%04d ",strtonum("0x"a))}1' file
复制代码

论坛徽章:
0
7 [报告]
发表于 2012-07-18 16:46 |只看该作者
awk '{a=gensub(/.*B(\w+)\/.*/,"\\1","g",$0);printf("%04d ",strtonum("0x"a))}1' file
中的w+何意?多谢~~~~
我改成(0-F)也是可以的

kk5234 发表于 2012-07-18 16:42
回复 5# wbbshen

论坛徽章:
0
8 [报告]
发表于 2012-07-18 16:49 |只看该作者
回复 7# wbbshen


    \w 匹配包括下划线的任何单词字符(等价于[A-Za-z0-9_])
    +  匹配前面的子表达式 1 次或多次

论坛徽章:
0
9 [报告]
发表于 2012-07-18 17:04 |只看该作者
多谢~~回复 8# kk5234


   

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
10 [报告]
发表于 2012-07-19 13:52 |只看该作者
来个 sed 版本吧:
  1. [seesea@UC ~]$ cat aaa.txt
  2. abcdefg_higklmn.tar DOID://00000001/000B0131/00001000/00001000 10.81.103.147  Active     Active     Application
  3. abcdefg_higklmn.tar DOID://00000001/000B0145/00001000/00001000 10.81.103.147  Active     Active     Application
  4. [seesea@UC ~]$ sed -r 's#.*//[^/]*/[^/]*(....)/.*#\1\t&#' aaa.txt
  5. 0131    abcdefg_higklmn.tar DOID://00000001/000B0131/00001000/00001000 10.81.103.147  Active     Active     Application
  6. 0145    abcdefg_higklmn.tar DOID://00000001/000B0145/00001000/00001000 10.81.103.147  Active     Active     Application
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP