这听起来这样从您的评论可能是你真正寻找:
$ cat tst.awk
{
size = strtonum("0x"$1)
sub(/^([^[:space:]]+[[:space:]]+){2}/,"")
name = $0
}
NR==FNR { oldSize[name] = size; next }
{
newSize[name] = size
if (name in oldSize) {
if (oldSize[name] < newSize[name]) {
bigger[name]
}
else if (oldSize[name] > newSize[name]) {
smaller[name]
}
}
else {
added[name]
}
}
END {
print "Got bigger:"
for (name in bigger) print "\t" name, oldSize[name], "->", newSize[name]
print "Got smaller:"
for (name in smaller) print "\t" name, oldSize[name], "->", newSize[name]
print "Added:"
for (name in added) print "\t" name
print "Deleted:"
for (name in oldSize) if (!(name in newSize)) print "\t" name
}
。
$ gawk -f tst.awk
Got bigger:
Mac16x11 92 -> 93
Got smaller:
L_mac 66 -> 65
Added:
extract_h
Deleted:
G729Residu
上面使用GNU AWK为strtonum(),并在这些2输入文件运行:
$ cat file1
000000000000000b r __PRETTY_FUNCTION__.6473
0000000000000036 t L_mult
000000000000003a t sature32
0000000000000042 t L_mac
0000000000000048 t L_add
000000000000005c t Mac16x11
0000000000000077 t L_shl
0000000000000083 t L_shr
00000000000000df T G729Convolve
0000000000000114 T G729Residu
00000000000001bc T G729Syn_filt_L_H
00000000000001bc T G729Syn_filt_L_SUBFR
$ cat file2
000000000000000b r __PRETTY_FUNCTION__.6473
0000000000000017 t extract_h
0000000000000036 t L_mult
000000000000003a t sature32
0000000000000041 t L_mac
0000000000000048 t L_add
000000000000005d t Mac16x11
0000000000000077 t L_shl
0000000000000083 t L_shr
00000000000000df T G729Convolve
00000000000001bc T G729Syn_filt_L_H
00000000000001bc T G729Syn_filt_L_SUBFR
只要与相应nm ...替换每个cat file。