免费注册 查看新帖 |

Chinaunix

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

awk 输出问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-10 15:49 |只看该作者 |倒序浏览
  1. # echo "7249 81"|awk '{printf "%c %c\n",$1,$2}'
  2. Q Q
复制代码
请问这个输出为什么是相同的?

论坛徽章:
0
2 [报告]
发表于 2012-05-10 15:56 |只看该作者
把%c 变成 %s就会得到你要的结果:

echo "7249 81"|awk '{printf "%s %s\n",$1,$2}'

论坛徽章:
0
3 [报告]
发表于 2012-05-10 16:20 |只看该作者
回复 2# 比克

我可能没说清楚:
其实前面的两个数是我在一个数据文件中将十六进制转化为十进制后得到的值

我想通过printf将其还原成ASCII表中对应的字符,但出现上面显示的结果

十进制数值81代表大写字母Q我知道,我想问的是为什么前面的4位数也表示大写字母Q???


   

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
4 [报告]
发表于 2012-05-10 17:49 |只看该作者
回复 3# chaogle

# echo "7249 81" | awk '{printf "%d %d\n",$1%256,$2}'
81 81

   

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
5 [报告]
发表于 2012-05-10 20:06 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2012-05-10 21:00 |只看该作者
chaogle 发表于 2012-05-10 16:20
回复 2# 比克

我可能没说清楚:



echo '7249%128'|bc
81

论坛徽章:
0
7 [报告]
发表于 2012-05-10 22:17 |只看该作者
回复 4# jason680

谢谢大家的讨论,可能是这么解释(要是有明确文档出处就好了^_^)
ASCII码表中有0-255个字符编码,使用255的余数来设计charater格式的输出转化比较说得通.

其实这个问题是在观测tcpdump输出时想到的问题,抓包得到的都是0x-----的十六进制字段,想转换一下以作分析.
  1. # cat datafile
  2. 2012-05-09 17:04:08.731823 IP (tos 0x10, ttl  64, id 39267, offset 0, flags [DF], proto: TCP (6), length: 92) HPC_head.ssh > 192.168.101.40.52262: tcp 52
  3.         0x0000:  4510 005c 9963 4000 4006 8804 c0a8 32ab
  4.         0x0010:  c0a8 6528 0016 cc26 eb82 af39 ab3b c2a8
  5.         0x0020:  5018 29f8 1973 0000 3b98 85c5 6e6e 87b9
  6.         0x0030:  76c2 dc22 4d44 f5a9 0aae ca09 c067 5df8
  7.         0x0040:  a535 c6a7 d8d4 75d5 014e 4d68 6ef7 3e52
  8.         0x0050:  3f85
复制代码
  1. # cat datafile |awk -f awk_script
  2. 2012-05-09 17:04:08.731823 IP (tos 0x10, ttl  64, id 39267, offset 0, flags [DF], proto: TCP (6), length: 92) HPC_head.ssh > 192.168.101.40.52262: tcp 52
  3.         0x0000:  4510 005c 9963 4000 4006 8804 c0a8 32ab|9
  4.         U \ .@ F .i ?

  5.         0x0010:  c0a8 6528 0016 cc26 eb82 af39 ab3b c2a8|9
  6.         i . ?n .?k

  7.         0x0020:  5018 29f8 1973 0000 3b98 85c5 6e6e 87b9|9
  8.         h ) . ?K ?A

  9.         0x0030:  76c2 dc22 4d44 f5a9 0aae ca09 c067 5df8|9
  10.         9 .. ??( ]

  11.         0x0040:  a535 c6a7 d8d4 75d5 014e 4d68 6ef7 3e52|9
  12.         ?n .K O ?n .

  13.         0x0050:  3f85|2
  14.         0
复制代码
但是看来即使我转化后得到的结果也不是什么有意义的内容,应该不是我想的一个字段一个字符。。。:wink:

大家有什么看法吗,改如何去分析这些字段信息?


   

论坛徽章:
1
辰龙
日期:2014-05-22 11:38:58
8 [报告]
发表于 2012-05-10 22:38 |只看该作者
  1. $ echo "7249 81"|awk '{printf "%x %x\n",$1,$2}'
  2. 1c51 51
复制代码
高位被丢弃了

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
9 [报告]
发表于 2012-05-11 09:44 |只看该作者
回复 7# chaogle
  1. # awk 'function hexprint(str,loc){v=strtonum("0x"substr(str,loc,2));if(v>=0x20&&v<=0x7E)printf("%c ",v);else printf ". ";if(loc==3)printf" "}/^ +0x/{print $0;printf "                 ";for(n=2;n<=NF;n++){hexprint($n,1);hexprint($n,3)};print""}' datafile
  2.         0x0000:  4510 005c 9963 4000 4006 8804 c0a8 32ab
  3.                  E .  . \  . c  @ .  @ .  . .  . .  2 .
  4.         0x0010:  c0a8 6528 0016 cc26 eb82 af39 ab3b c2a8
  5.                  . .  e (  . .  . &  . .  . 9  . ;  . .
  6.         0x0020:  5018 29f8 1973 0000 3b98 85c5 6e6e 87b9
  7.                  P .  ) .  . s  . .  ; .  . .  n n  . .
  8.         0x0030:  76c2 dc22 4d44 f5a9 0aae ca09 c067 5df8
  9.                  v .  . "  M D  . .  . .  . .  . g  ] .
  10.         0x0040:  a535 c6a7 d8d4 75d5 014e 4d68 6ef7 3e52
  11.                  . 5  . .  . .  u .  . N  M h  n .  > R
  12.         0x0050:  3f85
  13.                  ? .
复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2012-05-11 10:45 |只看该作者
转换后,还是看得不明白。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP