awk 解析maps文件中的地址

maps文件一般是这个样子:

[email protected]:~ $ sudo cat /proc/1/maps
54b88000-54c8d000 r-xp 00000000 b3:07 655537     /lib/systemd/systemd
54c9c000-54cac000 r--p 00104000 b3:07 655537     /lib/systemd/systemd
54cac000-54cad000 rw-p 00114000 b3:07 655537     /lib/systemd/systemd
5628b000-56354000 rw-p 00000000 00:00 0          [heap]
75900000-75929000 rw-p 00000000 00:00 0
75929000-75a00000 ---p 00000000 00:00 0
75b00000-75b29000 rw-p 00000000 00:00 0
75b29000-75c00000 ---p 00000000 00:00 0
75c4c000-75c4d000 ---p 00000000 00:00 0
75c4d000-7644c000 rwxp 00000000 00:00 0
7644c000-7644d000 ---p 00000000 00:00 0
7644d000-76c4c000 rwxp 00000000 00:00 0
76c4c000-76c8e000 rw-p 00000000 00:00 0
76c8e000-76c92000 r-xp 00000000 b3:07 651732     /lib/arm-linux-gnueabihf/libattr.so.1.1.0
76c92000-76ca1000 ---p 00004000 b3:07 651732     /lib/arm-linux-gnueabihf/libattr.so.1.1.0
76ca1000-76ca2000 r--p 00003000 b3:07 651732     /lib/arm-linux-gnueabihf/libattr.so.1.1.0
76ca2000-76ca3000 rw-p 00004000 b3:07 651732     /lib/arm-linux-gnueabihf/libattr.so.1.1.0
76ca3000-76ca5000 r-xp 00000000 b3:07 651591     /lib/arm-linux-gnueabihf/libdl-2.19.so
76ca5000-76cb4000 ---p 00002000 b3:07 651591     /lib/arm-linux-gnueabihf/libdl-2.19.so
76cb4000-76cb5000 r--p 00001000 b3:07 651591     /lib/arm-linux-gnueabihf/libdl-2.19.so
76cb5000-76cb6000 rw-p 00002000 b3:07 651591     /lib/arm-linux-gnueabihf/libdl-2.19.so
76cb6000-76d18000 r-xp 00000000 b3:07 651752     /lib/arm-linux-gnueabihf/libpcre.so.3.13.1
76d18000-76d27000 ---p 00062000 b3:07 651752     /lib/arm-linux-gnueabihf/libpcre.so.3.13.1
76d27000-76d28000 r--p 00061000 b3:07 651752     /lib/arm-linux-gnueabihf/libpcre.so.3.13.1
76d28000-76d29000 rw-p 00062000 b3:07 651752     /lib/arm-linux-gnueabihf/libpcre.so.3.13.1
76d29000-76d2f000 r-xp 00000000 b3:07 651761     /lib/arm-linux-gnueabihf/librt-2.19.so
76d2f000-76d3e000 ---p 00006000 b3:07 651761     /lib/arm-linux-gnueabihf/librt-2.19.so
76d3e000-76d3f000 r--p 00005000 b3:07 651761     /lib/arm-linux-gnueabihf/librt-2.19.so
76d3f000-76d40000 rw-p 00006000 b3:07 651761     /lib/arm-linux-gnueabihf/librt-2.19.so
76d40000-76d53000 r-xp 00000000 b3:07 651716     /lib/arm-linux-gnueabihf/libkmod.so.2.2.8
76d53000-76d62000 ---p 00013000 b3:07 651716     /lib/arm-linux-gnueabihf/libkmod.so.2.2.8
76d62000-76d63000 r--p 00012000 b3:07 651716     /lib/arm-linux-gnueabihf/libkmod.so.2.2.8
76d63000-76d64000 rw-p 00013000 b3:07 651716     /lib/arm-linux-gnueabihf/libkmod.so.2.2.8
76d64000-76d67000 r-xp 00000000 b3:07 651697     /lib/arm-linux-gnueabihf/libcap.so.2.24
76d67000-76d76000 ---p 00003000 b3:07 651697     /lib/arm-linux-gnueabihf/libcap.so.2.24
76d76000-76d77000 r--p 00002000 b3:07 651697     /lib/arm-linux-gnueabihf/libcap.so.2.24
76d77000-76d78000 rw-p 00003000 b3:07 651697     /lib/arm-linux-gnueabihf/libcap.so.2.24
76d78000-76d90000 r-xp 00000000 b3:07 651756     /lib/arm-linux-gnueabihf/libaudit.so.1.0.0
76d90000-76d9f000 ---p 00018000 b3:07 651756     /lib/arm-linux-gnueabihf/libaudit.so.1.0.0
76d9f000-76da0000 r--p 00017000 b3:07 651756     /lib/arm-linux-gnueabihf/libaudit.so.1.0.0
76da0000-76da1000 rw-p 00018000 b3:07 651756     /lib/arm-linux-gnueabihf/libaudit.so.1.0.0
76da1000-76dab000 rw-p 00000000 00:00 0
76dab000-76db6000 r-xp 00000000 b3:07 651734     /lib/arm-linux-gnueabihf/libpam.so.0.83.1
76db6000-76dc5000 ---p 0000b000 b3:07 651734     /lib/arm-linux-gnueabihf/libpam.so.0.83.1
76dc5000-76dc6000 r--p 0000a000 b3:07 651734     /lib/arm-linux-gnueabihf/libpam.so.0.83.1
76dc6000-76dc7000 rw-p 0000b000 b3:07 651734     /lib/arm-linux-gnueabihf/libpam.so.0.83.1
76dc7000-76de2000 r-xp 00000000 b3:07 651657     /lib/arm-linux-gnueabihf/libselinux.so.1
76de2000-76df1000 ---p 0001b000 b3:07 651657     /lib/arm-linux-gnueabihf/libselinux.so.1
76df1000-76df2000 r--p 0001a000 b3:07 651657     /lib/arm-linux-gnueabihf/libselinux.so.1
76df2000-76df3000 rw-p 0001b000 b3:07 651657     /lib/arm-linux-gnueabihf/libselinux.so.1
76df3000-76df4000 rw-p 00000000 00:00 0
76df4000-76f1f000 r-xp 00000000 b3:07 651612     /lib/arm-linux-gnueabihf/libc-2.19.so
76f1f000-76f2f000 ---p 0012b000 b3:07 651612     /lib/arm-linux-gnueabihf/libc-2.19.so
76f2f000-76f31000 r--p 0012b000 b3:07 651612     /lib/arm-linux-gnueabihf/libc-2.19.so
76f31000-76f32000 rw-p 0012d000 b3:07 651612     /lib/arm-linux-gnueabihf/libc-2.19.so
76f32000-76f35000 rw-p 00000000 00:00 0
76f35000-76f49000 r-xp 00000000 b3:07 651758     /lib/arm-linux-gnueabihf/libpthread-2.19.so
76f49000-76f59000 ---p 00014000 b3:07 651758     /lib/arm-linux-gnueabihf/libpthread-2.19.so
76f59000-76f5a000 r--p 00014000 b3:07 651758     /lib/arm-linux-gnueabihf/libpthread-2.19.so
76f5a000-76f5b000 rw-p 00015000 b3:07 651758     /lib/arm-linux-gnueabihf/libpthread-2.19.so
76f5b000-76f5d000 rw-p 00000000 00:00 0
76f6f000-76f74000 r-xp 00000000 b3:07 528562     /usr/lib/arm-linux-gnueabihf/libarmmem.so
76f74000-76f83000 ---p 00005000 b3:07 528562     /usr/lib/arm-linux-gnueabihf/libarmmem.so
76f83000-76f84000 rw-p 00004000 b3:07 528562     /usr/lib/arm-linux-gnueabihf/libarmmem.so
76f84000-76fa4000 r-xp 00000000 b3:07 651597     /lib/arm-linux-gnueabihf/ld-2.19.so
76fab000-76fb3000 rw-p 00000000 00:00 0
76fb3000-76fb4000 r--p 0001f000 b3:07 651597     /lib/arm-linux-gnueabihf/ld-2.19.so
76fb4000-76fb5000 rw-p 00020000 b3:07 651597     /lib/arm-linux-gnueabihf/ld-2.19.so
7ef76000-7ef97000 rwxp 00000000 00:00 0          [stack]
7eff2000-7eff3000 r-xp 00000000 00:00 0          [sigpage]
7eff3000-7eff4000 r--p 00000000 00:00 0          [vvar]
7eff4000-7eff5000 r-xp 00000000 00:00 0          [vdso]
ffff0000-ffff1000 r-xp 00000000 00:00 0          [vectors]
[email protected]:~ $ 

只有模块起始和结束地址,但是没有模块的size。有时我们需要size,要怎么来获取?比较容易的方法是写个shell脚本,大致思路是:提取第一列,再从第一列中提取出开始地址和结束地址,再两个相减得到size。

研究了一下awk的man,发现上述的几个步骤awk完全可以包办了:

sudo cat /proc/1/maps | awk ‘{split($1,RANGE,"-"); if(RANGE[1]~/^0x/){STARTADDR=strtonum(RANGE[1])} else{STARTADDR=strtonum("0x"RANGE[1])}; if(RANGE[2]~/^0x/){ENDADDR=strtonum(RANGE[2])} else{ENDADDR=strtonum("0x"RANGE[2])};ADDRSIZE=strtonum(ENDADDR-STARTADDR);printf("0x%x 0x%x 0x%x %s\n", STARTADDR, ENDADDR, ADDRSIZE, $0)}‘

大致解释一下:

{split($1,RANGE,"-")

此句意思是将第一列拆分成数组,结果保存在变量RANGE中,分割符为“-”。即:RANGE[1]为起始地址,RANGE[2]为结束地址

if(RANGE[1]~/^0x/){STARTADDR=strtonum(RANGE[1])} else{STARTADDR=strtonum("0x"RANGE[1])}

对于Linux的有些发行版来说,第一列的地址可能以“0x”开头,而有些则不是(比如本人使用的树莓派Raspbian GNU/Linux),这里兼容了一下这两种情况,结果STARTADDR的值为0x????????

if(RANGE[2]~/^0x/){ENDADDR=strtonum(RANGE[2])} else{ENDADDR=strtonum("0x"RANGE[2])}

同上,这里得到的ENDADDR值也是0x????????的形式

ADDRSIZE=strtonum(ENDADDR-STARTADDR)

这里调用了awk的內建函数strtonum,该函数将一个字符串转换为十进制数字,前面的STARTADDR和ENDADDR之所以要加上“0x”前缀也是因为strtonum的要求:如果是16进制数,则必须有前缀,否则会按照十进制处理,发生错误。注意awk要求引用变量时不需要加$符号。某些较低版本的awk可能会不支持strtonum,此时需要upgrade更新,或者下载gawk的最近代码重新编译:http://mirrors.ustc.edu.cn/gnu/

printf("0x%x 0x%x 0x%x %s\n", STARTADDR, ENDADDR, ADDRSIZE, $0)

最后一步是格式化输出,这个跟C语言的printf是很相似的。这里$0表示原文件中一行的所有列。

最后得到的结果是这个样子:

0x54b88000 0x54c8d000 0x105000 54b88000-54c8d000 r-xp 00000000 b3:07 655537     /lib/systemd/systemd
0x54c9c000 0x54cac000 0x10000 54c9c000-54cac000 r--p 00104000 b3:07 655537     /lib/systemd/systemd
0x54cac000 0x54cad000 0x1000 54cac000-54cad000 rw-p 00114000 b3:07 655537     /lib/systemd/systemd
0x5628b000 0x56354000 0xc9000 5628b000-56354000 rw-p 00000000 00:00 0          [heap]
0x75900000 0x75929000 0x29000 75900000-75929000 rw-p 00000000 00:00 0
0x75929000 0x75a00000 0xd7000 75929000-75a00000 ---p 00000000 00:00 0
0x75b00000 0x75b29000 0x29000 75b00000-75b29000 rw-p 00000000 00:00 0
0x75b29000 0x75c00000 0xd7000 75b29000-75c00000 ---p 00000000 00:00 0
0x75c4c000 0x75c4d000 0x1000 75c4c000-75c4d000 ---p 00000000 00:00 0
0x75c4d000 0x7644c000 0x7ff000 75c4d000-7644c000 rwxp 00000000 00:00 0
0x7644c000 0x7644d000 0x1000 7644c000-7644d000 ---p 00000000 00:00 0
0x7644d000 0x76c4c000 0x7ff000 7644d000-76c4c000 rwxp 00000000 00:00 0
0x76c4c000 0x76c8e000 0x42000 76c4c000-76c8e000 rw-p 00000000 00:00 0
0x76c8e000 0x76c92000 0x4000 76c8e000-76c92000 r-xp 00000000 b3:07 651732     /lib/arm-linux-gnueabihf/libattr.so.1.1.0
0x76c92000 0x76ca1000 0xf000 76c92000-76ca1000 ---p 00004000 b3:07 651732     /lib/arm-linux-gnueabihf/libattr.so.1.1.0
0x76ca1000 0x76ca2000 0x1000 76ca1000-76ca2000 r--p 00003000 b3:07 651732     /lib/arm-linux-gnueabihf/libattr.so.1.1.0
0x76ca2000 0x76ca3000 0x1000 76ca2000-76ca3000 rw-p 00004000 b3:07 651732     /lib/arm-linux-gnueabihf/libattr.so.1.1.0
0x76ca3000 0x76ca5000 0x2000 76ca3000-76ca5000 r-xp 00000000 b3:07 651591     /lib/arm-linux-gnueabihf/libdl-2.19.so
0x76ca5000 0x76cb4000 0xf000 76ca5000-76cb4000 ---p 00002000 b3:07 651591     /lib/arm-linux-gnueabihf/libdl-2.19.so
0x76cb4000 0x76cb5000 0x1000 76cb4000-76cb5000 r--p 00001000 b3:07 651591     /lib/arm-linux-gnueabihf/libdl-2.19.so
0x76cb5000 0x76cb6000 0x1000 76cb5000-76cb6000 rw-p 00002000 b3:07 651591     /lib/arm-linux-gnueabihf/libdl-2.19.so
0x76cb6000 0x76d18000 0x62000 76cb6000-76d18000 r-xp 00000000 b3:07 651752     /lib/arm-linux-gnueabihf/libpcre.so.3.13.1
0x76d18000 0x76d27000 0xf000 76d18000-76d27000 ---p 00062000 b3:07 651752     /lib/arm-linux-gnueabihf/libpcre.so.3.13.1
0x76d27000 0x76d28000 0x1000 76d27000-76d28000 r--p 00061000 b3:07 651752     /lib/arm-linux-gnueabihf/libpcre.so.3.13.1
0x76d28000 0x76d29000 0x1000 76d28000-76d29000 rw-p 00062000 b3:07 651752     /lib/arm-linux-gnueabihf/libpcre.so.3.13.1
0x76d29000 0x76d2f000 0x6000 76d29000-76d2f000 r-xp 00000000 b3:07 651761     /lib/arm-linux-gnueabihf/librt-2.19.so
0x76d2f000 0x76d3e000 0xf000 76d2f000-76d3e000 ---p 00006000 b3:07 651761     /lib/arm-linux-gnueabihf/librt-2.19.so
0x76d3e000 0x76d3f000 0x1000 76d3e000-76d3f000 r--p 00005000 b3:07 651761     /lib/arm-linux-gnueabihf/librt-2.19.so
0x76d3f000 0x76d40000 0x1000 76d3f000-76d40000 rw-p 00006000 b3:07 651761     /lib/arm-linux-gnueabihf/librt-2.19.so
0x76d40000 0x76d53000 0x13000 76d40000-76d53000 r-xp 00000000 b3:07 651716     /lib/arm-linux-gnueabihf/libkmod.so.2.2.8
0x76d53000 0x76d62000 0xf000 76d53000-76d62000 ---p 00013000 b3:07 651716     /lib/arm-linux-gnueabihf/libkmod.so.2.2.8
0x76d62000 0x76d63000 0x1000 76d62000-76d63000 r--p 00012000 b3:07 651716     /lib/arm-linux-gnueabihf/libkmod.so.2.2.8
0x76d63000 0x76d64000 0x1000 76d63000-76d64000 rw-p 00013000 b3:07 651716     /lib/arm-linux-gnueabihf/libkmod.so.2.2.8
0x76d64000 0x76d67000 0x3000 76d64000-76d67000 r-xp 00000000 b3:07 651697     /lib/arm-linux-gnueabihf/libcap.so.2.24
0x76d67000 0x76d76000 0xf000 76d67000-76d76000 ---p 00003000 b3:07 651697     /lib/arm-linux-gnueabihf/libcap.so.2.24
0x76d76000 0x76d77000 0x1000 76d76000-76d77000 r--p 00002000 b3:07 651697     /lib/arm-linux-gnueabihf/libcap.so.2.24
0x76d77000 0x76d78000 0x1000 76d77000-76d78000 rw-p 00003000 b3:07 651697     /lib/arm-linux-gnueabihf/libcap.so.2.24
0x76d78000 0x76d90000 0x18000 76d78000-76d90000 r-xp 00000000 b3:07 651756     /lib/arm-linux-gnueabihf/libaudit.so.1.0.0
0x76d90000 0x76d9f000 0xf000 76d90000-76d9f000 ---p 00018000 b3:07 651756     /lib/arm-linux-gnueabihf/libaudit.so.1.0.0
0x76d9f000 0x76da0000 0x1000 76d9f000-76da0000 r--p 00017000 b3:07 651756     /lib/arm-linux-gnueabihf/libaudit.so.1.0.0
0x76da0000 0x76da1000 0x1000 76da0000-76da1000 rw-p 00018000 b3:07 651756     /lib/arm-linux-gnueabihf/libaudit.so.1.0.0
0x76da1000 0x76dab000 0xa000 76da1000-76dab000 rw-p 00000000 00:00 0
0x76dab000 0x76db6000 0xb000 76dab000-76db6000 r-xp 00000000 b3:07 651734     /lib/arm-linux-gnueabihf/libpam.so.0.83.1
0x76db6000 0x76dc5000 0xf000 76db6000-76dc5000 ---p 0000b000 b3:07 651734     /lib/arm-linux-gnueabihf/libpam.so.0.83.1
0x76dc5000 0x76dc6000 0x1000 76dc5000-76dc6000 r--p 0000a000 b3:07 651734     /lib/arm-linux-gnueabihf/libpam.so.0.83.1
0x76dc6000 0x76dc7000 0x1000 76dc6000-76dc7000 rw-p 0000b000 b3:07 651734     /lib/arm-linux-gnueabihf/libpam.so.0.83.1
0x76dc7000 0x76de2000 0x1b000 76dc7000-76de2000 r-xp 00000000 b3:07 651657     /lib/arm-linux-gnueabihf/libselinux.so.1
0x76de2000 0x76df1000 0xf000 76de2000-76df1000 ---p 0001b000 b3:07 651657     /lib/arm-linux-gnueabihf/libselinux.so.1
0x76df1000 0x76df2000 0x1000 76df1000-76df2000 r--p 0001a000 b3:07 651657     /lib/arm-linux-gnueabihf/libselinux.so.1
0x76df2000 0x76df3000 0x1000 76df2000-76df3000 rw-p 0001b000 b3:07 651657     /lib/arm-linux-gnueabihf/libselinux.so.1
0x76df3000 0x76df4000 0x1000 76df3000-76df4000 rw-p 00000000 00:00 0
0x76df4000 0x76f1f000 0x12b000 76df4000-76f1f000 r-xp 00000000 b3:07 651612     /lib/arm-linux-gnueabihf/libc-2.19.so
0x76f1f000 0x76f2f000 0x10000 76f1f000-76f2f000 ---p 0012b000 b3:07 651612     /lib/arm-linux-gnueabihf/libc-2.19.so
0x76f2f000 0x76f31000 0x2000 76f2f000-76f31000 r--p 0012b000 b3:07 651612     /lib/arm-linux-gnueabihf/libc-2.19.so
0x76f31000 0x76f32000 0x1000 76f31000-76f32000 rw-p 0012d000 b3:07 651612     /lib/arm-linux-gnueabihf/libc-2.19.so
0x76f32000 0x76f35000 0x3000 76f32000-76f35000 rw-p 00000000 00:00 0
0x76f35000 0x76f49000 0x14000 76f35000-76f49000 r-xp 00000000 b3:07 651758     /lib/arm-linux-gnueabihf/libpthread-2.19.so
0x76f49000 0x76f59000 0x10000 76f49000-76f59000 ---p 00014000 b3:07 651758     /lib/arm-linux-gnueabihf/libpthread-2.19.so
0x76f59000 0x76f5a000 0x1000 76f59000-76f5a000 r--p 00014000 b3:07 651758     /lib/arm-linux-gnueabihf/libpthread-2.19.so
0x76f5a000 0x76f5b000 0x1000 76f5a000-76f5b000 rw-p 00015000 b3:07 651758     /lib/arm-linux-gnueabihf/libpthread-2.19.so
0x76f5b000 0x76f5d000 0x2000 76f5b000-76f5d000 rw-p 00000000 00:00 0
0x76f6f000 0x76f74000 0x5000 76f6f000-76f74000 r-xp 00000000 b3:07 528562     /usr/lib/arm-linux-gnueabihf/libarmmem.so
0x76f74000 0x76f83000 0xf000 76f74000-76f83000 ---p 00005000 b3:07 528562     /usr/lib/arm-linux-gnueabihf/libarmmem.so
0x76f83000 0x76f84000 0x1000 76f83000-76f84000 rw-p 00004000 b3:07 528562     /usr/lib/arm-linux-gnueabihf/libarmmem.so
0x76f84000 0x76fa4000 0x20000 76f84000-76fa4000 r-xp 00000000 b3:07 651597     /lib/arm-linux-gnueabihf/ld-2.19.so
0x76fab000 0x76fb3000 0x8000 76fab000-76fb3000 rw-p 00000000 00:00 0
0x76fb3000 0x76fb4000 0x1000 76fb3000-76fb4000 r--p 0001f000 b3:07 651597     /lib/arm-linux-gnueabihf/ld-2.19.so
0x76fb4000 0x76fb5000 0x1000 76fb4000-76fb5000 rw-p 00020000 b3:07 651597     /lib/arm-linux-gnueabihf/ld-2.19.so
0x7ef76000 0x7ef97000 0x21000 7ef76000-7ef97000 rwxp 00000000 00:00 0          [stack]
0x7eff2000 0x7eff3000 0x1000 7eff2000-7eff3000 r-xp 00000000 00:00 0          [sigpage]
0x7eff3000 0x7eff4000 0x1000 7eff3000-7eff4000 r--p 00000000 00:00 0          [vvar]
0x7eff4000 0x7eff5000 0x1000 7eff4000-7eff5000 r-xp 00000000 00:00 0          [vdso]
0xffff0000 0xffff1000 0x1000 ffff0000-ffff1000 r-xp 00000000 00:00 0          [vectors]
时间: 2024-12-03 09:35:29

awk 解析maps文件中的地址的相关文章

iOS如何解析crash文件中的地址

1.目录中存放app文件 2.打开文件 3.执行命令otool -arch arm64 -l ./QQStock  | grep -B 1 -A 10 "LC_SEGM" | grep -B 3 -A 8 "__TEXT" 4.解析命令xcrun atos -arch arm64 -o ./QQStock 0x100633614 需要计算出绝对地址(基地址+偏移地址) lideiMac:4.0.1 lixiang$ lideiMac:4.0.1 lixiang$ c

/proc/$pid/maps文件中各个空间段的意义

一.从/proc/self/maps中看到的内存布局 在这个输出中,可以很容易看到一个so文件中有一个"---p"属性的区间段,它们对应哪些文件内容,数据从哪里来?在stackoverflow网站上也有一个这样的提问,只是还没有人解答.[email protected]: cat /proc/self/maps 00400000-0040b000 r-xp 00000000 fd:01 15433 /usr/bin/cat0060b000-0060c000 r--p 0000b000

python解析pcap文件中的http数据包

使用scapy.scapy_http就可以方便的对pcap包中的http数据包进行解析 scapy_http可以在https://github.com/invernizzi/scapy-http下载,该地址下也给出了简单的示例程序,按照此示例程序我修改了一个输出pcap包中http包的源目的地址.payload的小程序,如下所示: 其中,p为数据包,scapy_http将其分为: Ethernet->TCP->RAW三个层次, 使用p.show()函数可以打印出如下结果: ###[ Ether

linux awk解析csv文件

#!/bin/bashfor file in *.csvdo awk -F ',' 'begin {total=0;sum=0} {total++;if($1<=100.0 && $15!=0) sum++} END{ print FILENAME,"all",total, sum ,sum*1.0/total}' $file >> stat1.log awk -F ',' 'begin {total=0;sum=0} {total[$15]++;if

百度地图引入到html/jsp文件中的地址

http://api.map.baidu.com/lbsapi/creatmap/index.html

在java项目中如何利用Dom4j解析XML文件获取数据

在以前的学习.net时经常会遇到利用配置文件来解决项目中一些需要经常变换的数据,比如数据库的连接字符串儿等.这个时候在读取配置文件的时候,我们通常会用到一个雷configuration,通过这个类来进行直接读取,可以说这是程序中直接封装好的,包括配置文件中书写的格式等等.那么,如果,想要在配置文件中写一些其他的数据,直接以XML文件的格式进行书写,这个时候在后台如何读取XML文件中的数据呢?这里利用Dom4j来解析XML文件中连接oracle数据库的xml数据. 在使用之前,首先要在自己的项目中

Jsoup学习笔记9:Jsoup 解析saz文件,读取其中的htm文件到字符串,提取字符串中的数据写入csv文件中

本篇笔记将上篇笔记的操作做些改进,不再把saz文件中的htm文件解析出来,而是不解压直接读取其中的数据成字符串,基本思路如下: 1.自定义一个从文本文件读取内容到字符串的类:解析saz文件中的htm文档,将文件的内容读取到字符串中 2.自定义利用Jsoup解析htm字符串的类:利用Jsoup解析传入的htm字符串,将解析结果写入csv文件中 3.解析时,指定好文件路径,直接调用上面的两个工具类即可 示例代码如下: package com.daxiang.saztest; /** * 自定义一个从

用python 替换文件中的git地址

有个需求要替换文件中git地址,要替换成的git地址是一个变量 本来想用sed替换但是git地址中有斜杠符号 需要转义,提前知道还好弄,如果是变量就不好处理了 #!/usr/bin/python3 # -*- coding: utf-8 -*- #替换git地址 import os git_url = os.environ.get('git_url') git_old = os.environ.get('git_old') f = open('/tmp/oc_export.json','w',e

linux proc maps文件分析

Proc/pid/maps显示进程映射了的内存区域和访问权限.对应内核中的操作集为proc_pid_maps_op,具体的导出函数为show_map.内核中进程的一段地址空间用一个vm_area_struct结构体表示,所有地址空间存储在task->mm->mmap链表中. 一个文件可以映射到进程的一段内存区域中,映射的文件描述符保存在vm_area_struct->vm_file域中,这种内存区域叫做有名内存区域,相反,属于匿名映射内存区域.Vm_area_struct每项对应解析如下