使用 awk&cut 进行字符文本处理

来源:互联网 发布:mac系统如何回到桌面 编辑:程序博客网 时间:2024/05/01 17:26
为分析程序的访存规律,使用 fprintf 方法打印了每次访存时的内存地址,形成了数千行 0x... 开头的 12 位地址信息,要在 excel 中处理这些地址需要将 0x 及地址的前三位去掉,一是因为所有地址的前三位均相同,二是 excel 的转换函数 hex2dec() 无法处理8位以上的 16 进制数。

主要变换过程为:0x2b9711fe5de0 --> =HEX2DEC("711fe5de0")

这样将文本直接粘贴到 excel 中即变成十进制数。


cat mem_addr_1read.txt | cut -c 6- > cut_addr.txt
使用上述命令截取地址第6位以后的字符,将 0x 及前 3 位去掉,并重定向到 cut_addr.txt 文件中。
0x2b9711fe5de0 --> 711fe5de0

$cat cut_addr.txt | awk '{ sub(/^/,"=HEX2DEC(\""); print}' > hex2dec.txt
使用上述命令将字符串首部分添加到文本中。
711fe5de0 --> =HEX2DEC("711fe5de0

cat hex2dec.txt | awk '{ sub(/$/,"\")"); print}' > excel_ready.txt
使用上述命令将字符串尾部分添加到文本中。
=HEX2DEC("711fe5de0 --> =HEX2DEC("711fe5de0")


因为原文本文件已是一行一个内存地址,所以将文件内容全选复制,直接粘贴到 excel 即可。



原创粉丝点击