如何解析文件并排除共享相同值的行?

时间:2016-09-29 08:13:32

标签: shell parsing logging strace

我正在尝试解析由Ii制作的脚本生成的输出文件,该脚本用于

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();

1 个答案:

答案 0 :(得分:0)

使用基本的shell命令(我在AIX 6上运行

首先,找到您的副本,例如使用此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 ?编辑上面的摘要。

分享并享受。