我正在尝试解析由Ii制作的脚本生成的输出文件,该脚本用于strace。
Bellow是解析日志的一个示例:
cat ${traced}_brut.txt | grep "map" > ${traced}_parced.txt
这是我用于解析的行:
17:21:07 mmap2(NULL, 8859, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6ff8000 <0.000337>
17:21:07 munmap(0xb6ff8000, 8859)
现在,我要做的是删除具有相同十六进制值的行,这样我就可以更好地发现内存泄漏。
例如,在这种情况下,波纹管线应该从最终的日志文件中消失,因为它们共享相同的十六进制值:
canvas = gameView.getHolder().lockCanvas();
答案 0 :(得分:0)
使用基本的shell命令(我在AIX 6上运行ksh)
首先,找到您的副本,例如使用此cur.execute("\
INSERT INTO Movies \
(ID, Country) \
SELECT m.ID, c.Country\
FROM other.Movies m CROSS JOIN other.Countries c \
WHERE m.ID = c.ID AND c.Country = 'Peru'")
/ sed
/ sort
,注册到新文件(例如输入在a.txt中):
uniq
所以输入&#34; a.txt&#34;:
sed -e 's/\(.*\)\(0x........\)\(.*\)/\2/' a.txt |sort | uniq -c
然后我们可以添加一个 1 0xb6e38000
1 0xb6f66000
1 0xb6f69000
1 0xb6f6c000
1 0xb6fd4000
1 0xb6ff7000
2 0xb6ff8000
1 0xb6ffa000
1 0xb6ffb000
,以便只在grep -v " 1 0x"| cut -c 6- | tr -d '[:blank:]' > exclude.lst
中复制(请注意,如果输入中有超过9个重复,它会移位,所以你应该再详细说明一下); (编辑:添加exclude.lst
以删除可能的空格)
然后将文件重新用于tr -d '[:blank:]'
您的输入;
grep -v
<强> EDIT1 强>
总结一下,你可以用这3行来做到这一点:
grep -vf exclude.lst a.txt
<强> EDIT2 强>
我找你了;也许我们可以从https://unix.stackexchange.com/questions/83260/reading-grep-patterns-from-a-file尝试这个cat ${traced}_brut.txt | grep "map" > ${traced}_parced.txt
sed -e 's/\(.*\)\(0x........\)\(.*\)/\2/' ${traced}_parced.txt |sort | uniq -c | grep -v " 1 0x"| cut -c 6- | tr -d '[:blank:]' > exclude.lst
#grep -vf exclude.lst ${traced}_parced.txt > ${traced}_final.txt
# above worked for me, but you may need to specify -F
grep -F -vf exclude.lst ${traced}_parced.txt > ${traced}_final.txt
?编辑上面的摘要。
分享并享受。