如何忽略以空白字符开头的行?

时间:2014-02-03 03:14:34

标签: linux shell awk grep

我有一个看起来像这样的udcli输出(假设命令完全有意义,实际上是由随机字节生成器实现的)

00000000000005b9 dc4753           fadd qword [edi+0x53]   
00000000000005bc 226d9e           and ch, [ebp-0x62]      
00000000000005bf 81a4a495dc47ff4b and dword [esp-0xb8236b], 0xe0076b4b
                -6b07e0          
00000000000005ca e667             out 0x67, al            
00000000000005cc 9acc27d432520f   call dword 0xf52:0x32d427cc

注意第3到第4行,其中有一条额外的行从第3行延伸。

现在,我要做的是获得前一行下一行地址的差异。我是通过使用我自己的awk脚本来完成的。

我的问题是,当awk读取第3行和第4行时,它会给我一个像这样的输出

3   dc4753  fadd    qword   [edi+0x53]
3   226d9e  and ch, [ebp-0x62]
3   81a4a495dc47ff4b    and dword   [esp-0xb8236b],
-1471                                                   
1482    e667    out 0x67,   al
2   9acc27d432520f  call    dword   0xf52:0x32d427cc

其中第1列是指令的大小(2个地址的差异)

现在我的问题是,如何让awk忽略该特定行,以便正确输出。 这是否可以用grep代替?

我当前的awk脚本

udcli file.out | awk 'BEGIN{getline; print "0\t" $2 "\t" $3 "\t" $4 "\t" $5; a = 0; b = strtonum("0x"$1);} {a = strtonum("0x"$1); print a - b "\t" $2 "\t" $3 "\t" $4 "\t" $5; b = a;}'

2 个答案:

答案 0 :(得分:1)

很难说肯定没有看到你的实际awk脚本,但这样的事情应该会帮助你...

awk '$1~/^000/' ... 

答案 1 :(得分:0)

awk '/^\s/ { getline }
    ... rest of script' < inputfile