【问题标题】:Parse out of a textfile necessary parts从文本文件中解析出必要的部分
【发布时间】:2015-06-07 17:25:01
【问题描述】:

我从地址清理程序中得到了这个输出:

我需要带有关键字SUMMARY 的行。我需要解析的内容是:

 AddressSanitizer 

 heap-buffer-overflow 

 main.cpp

 5

是否可以使用 bash 工具或类似的工具来做到这一点?

我问,因为它总是具有相同的输出结构,并且只需要带有这些关键字的这一行

    =================================================================
    ==11642==ERROR: AddressSanitizer: heap-buffer-overflow on   adress    
    0x61400000ffd4 at pc 0x47b8e5 bp 0x7fff67190bb0 sp 0x7fff67190ba8
    READ of size 4 at 0x61400000ffd4 thread T0
        #0 0x47b8e4 in main /home/pse/dockerfiles/memory_analysis_addressSanitizer/./main.cpp:5
        #1 0x7f78b6c8bec4 (/lib/x86_64-linux-gnu/libc.so.6+0x21ec4)
        #2 0x47b44c in _start (/home/pse/dockerfiles/memory_analysis_addressSanitizer/a.out+0x47b44c)

    0x61400000ffd4 is located 4 bytes to the right of 400-byte region [0x61400000fe40,0x61400000ffd0)
    allocated by thread T0 here:
        #0 0x465aa9 in operator new[](unsigned long) (/home/pse/dockerfiles/memory_analysis_addressSanitizer/a.out+0x465aa9)
        #1 0x47b76e in main /home/pse/dockerfiles/memory_analysis_addressSanitizer/./main.cpp:3
        #2 0x7f78b6c8bec4 (/lib/x86_64-linux-gnu/libc.so.6+0x21ec4)

    SUMMARY: AddressSanitizer: heap-buffer-overflow /home/pse/dockerfiles/memory_analysis_addressSanitizer/./main.cpp:5 main
    Shadow bytes around the buggy address:
      0x0c287fff9fa0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
      0x0c287fff9fb0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
      0x0c287fff9fc0: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
      0x0c287fff9fd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      0x0c287fff9fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    =>0x0c287fff9ff0: 00 00 00 00 00 00 00 00 00 00[fa]fa fa fa fa fa
      0x0c287fffa000: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
      0x0c287fffa010: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
      0x0c287fffa020: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
      0x0c287fffa030: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
      0x0c287fffa040: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
    Shadow byte legend (one shadow byte represents 8 application bytes):
      Addressable:           00
      Partially addressable: 01 02 03 04 05 06 07 
      Heap left redzone:     fa
      Heap right redzone:    fb
      Freed heap region:     fd
      Stack left redzone:    f1
      Stack mid redzone:     f2
      Stack right redzone:   f3
      Stack partial redzone: f4
      Stack after return:    f5
      Stack use after scope: f8
      Global redzone:        f9
      Global init order:     f6
      Poisoned by user:      f7
      ASan internal:         fe
    ==11642==ABORTING

【问题讨论】:

    标签: bash parsing


    【解决方案1】:

    你可以使用这个 awk 命令:

    awk -F '[ :]+' -v OFS='\n\n' '/SUMMARY/{sub(/.*\//, "", $4); print $2, $3, $4, $5}' file
    AddressSanitizer
    
    heap-buffer-overflow
    
    main.cpp
    
    5
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-28
      • 1970-01-01
      相关资源
      最近更新 更多