免费注册 查看新帖 |

Chinaunix

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

【求助】如何将文本中的16进制数字转换为10进制呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-02 11:50 |只看该作者 |倒序浏览
$ awk -F '[(,]' '/insert into/&&$3~/^0x/{printf $1"(";printf $2",";system("prin
tf \"%d\" "$3"");print ","$4","$5","$6","$7","$8","$9","$10","$11";n
ext}1' ma5600t_insert_alarm_CH.sql

上面的脚本是用来将下面的脚本中16进制数字转换成10进制的

use FaultDB
go

delete tbl_AlarmReason where DevType = -65495
go

insert into tbl_AlarmCfg values(-65495,0x0121a001,1,5,10,1,0,'数据库初始化失败','主控板数据库初始化失败,会导致系统复位,系统再次启动后将从备区数据库读取数据进行恢复',3,'3,4#单板的描述(仅网管可见)')
go

其中,[(,] 表示以"(" 或 ","为分隔符.如果单引号中的","不做为分隔符.那么怎么实现呢?

[ 本帖最后由 JackMa2009 于 2009-5-4 11:16 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-05-02 11:56 |只看该作者

回复 #1 JackMa2009 的帖子

man od

[ 本帖最后由 greendays 于 2009-5-2 12:47 编辑 ]

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
3 [报告]
发表于 2009-05-02 12:02 |只看该作者

回复 #1 JackMa2009 的帖子

$ num='0x22edf034'
$ echo $((16#${num#0x}))
586018868

论坛徽章:
0
4 [报告]
发表于 2009-05-02 12:06 |只看该作者

回复 #2 greendays 的帖子

楼上的是什么意思啊。我要将类似下面的文本:

insert into tbl_AlarmCfg values(0x22edf034, "AAAAAAAAAAAA");

转换成

insert into tbl_AlarmCfg values(586018868, "AAAAAAAAAAAA");

请支招,谢谢!

论坛徽章:
0
5 [报告]
发表于 2009-05-02 12:52 |只看该作者
cat file | perl -pe 's/0x[a-f0-9]+/hex($&)/eg;'

论坛徽章:
0
6 [报告]
发表于 2009-05-02 13:04 |只看该作者

回复 #5 lululau 的帖子

Administrator@jacky ~
$ cat aaa.sh | perl -pe 's/0x[a-f0-9]+/hex($&)/eg;'
bash: perl: command not found

要装perl吗?我没有玩过perl.能不能纯shell 语言实现下啊。

非常感谢。先祝你5.1 Hanppy哦

论坛徽章:
0
7 [报告]
发表于 2009-05-02 13:08 |只看该作者
try,
#! /bin/bash
while IFS= read -r
    do
       c=$(echo $REPLY | sed 's/.*(//;s/, *.*//')
       ch="values("$(echo -e $((16#${c#0x})))","
       echo $REPLY | awk -v v=$ch '{if(sub(/..*/, v, $4))print $0}'
    done < "$*"

论坛徽章:
0
8 [报告]
发表于 2009-05-02 13:21 |只看该作者

回复 #7 twfcc 的帖子

我把你的内容放到文本中执行,报错啦:(

Administrator@jacky ~
$ . ./test.sh
: No such file or directory

Administrator@jacky ~
$ cat test.sh
#!/bin/sh
while IFS= read -r
    do
       c=$(echo $REPLY | sed 's/.*(//;s/, *.*//')
       ch="values("$(echo -e $((16#${c#0x})))","
       echo $REPLY | awk -v v=$ch '{if(sub(/..*/, v, $4))print $0}'
done < "$*"

Administrator@jacky ~
$ ls -l test.sh
-rwxrwxrwx 1 Administrator None 224 May  2 13:15 test.sh

论坛徽章:
0
9 [报告]
发表于 2009-05-02 13:24 |只看该作者
.nc10@your-5554c55be4 ~
$ cat junk
insert into tbl_AlarmCfg values(0x22edf034, "AAAAAAAAAAAA");
insert into tbl_AlarmCfg values(0x22edf034, "AAAAAAAAAAAA");
insert into tbl_AlarmCfg values(0x22edf034, "AAAAAAAAAAAA");

nc10@your-5554c55be4 ~
$ cat ee
#! /bin/bash
while IFS= read -r
    do
       c=$(echo $REPLY | sed 's/.*(//;s/, *.*//')
       ch="values("$(echo -e $((16#${c#0x})))","
       echo $REPLY | awk -v v=$ch '{if(sub(/..*/, v, $4))print $0}'
    done < "$*"

nc10@your-5554c55be4 ~
$ chmod +x ee                                                                                                                                                   nc10@your-5554c55be4 ~
$ ./ee junk
insert into tbl_AlarmCfg values(586018868, "AAAAAAAAAAAA");
insert into tbl_AlarmCfg values(586018868, "AAAAAAAAAAAA");
insert into tbl_AlarmCfg values(586018868, "AAAAAAAAAAAA");

nc10@your-5554c55be4 ~
$

论坛徽章:
0
10 [报告]
发表于 2009-05-02 13:33 |只看该作者
用樓上 perl re, 改改好些

#! /bin/bash
while IFS= read -r
    do
       c=$(echo $REPLY | sed 's/.*(//;s/, *.*//')
       ch=$(echo -e $((16#${c#0x})))
       echo $REPLY | awk -v v=$ch '{if(sub(/0x[a-f0-9]+/, v, $4))print $0}'
    done < "$*"

當文本格式一樣
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP