bash – 如何使用`awk`来grep某些像这样的列?
发布时间:2020-12-15 22:24:58 所属栏目:安全 来源:网络整理
导读:所以基本上我有一些这样的文字: [ 4] .init PROGBITS 080481c0 0001c0 00002e 00 AX 0 0 4[ 5] .plt PROGBITS 080481f0 0001f0 000110 00 AX 0 0 16[ 6] .text PROGBITS 08048300 000300 07c95c 00 AX 0 0 16[ 7] __libc_thread_fre PROGBITS 080c4c60 07cc
所以基本上我有一些这样的文字:
[ 4] .init PROGBITS 080481c0 0001c0 00002e 00 AX 0 0 4 [ 5] .plt PROGBITS 080481f0 0001f0 000110 00 AX 0 0 16 [ 6] .text PROGBITS 08048300 000300 07c95c 00 AX 0 0 16 [ 7] __libc_thread_fre PROGBITS 080c4c60 07cc60 000076 00 AX 0 0 16 [ 8] __libc_freeres_fn PROGBITS 080c4ce0 07cce0 000b2f 00 AX 0 0 16 [ 9] .fini PROGBITS 080c5810 07d810 00001a 00 AX 0 0 4 [10] .rodata PROGBITS 080c5840 07d840 019774 00 A 0 0 32 [11] __libc_thread_sub PROGBITS 080defb4 096fb4 000004 00 A 0 0 4 [12] __libc_subfreeres PROGBITS 080defb8 096fb8 00002c 00 A 0 0 4 [13] __libc_atexit PROGBITS 080defe4 096fe4 000004 00 A 0 0 4 我想要得到的是: .init 080481c0 0001c0 00002e .plt 080481f0 0001f0 000110 .text 08048300 000300 07c95c __libc_thread_fre 080c4c60 07cc60 000076 __libc_freeres_fn 080c4ce0 07cce0 000b2f .fini 080c5810 07d810 00001a .rodata 080c5840 07d840 019774 __libc_thread_sub 080defb4 096fb4 000004 __libc_subfreeres 080defb8 096fb8 00002c __libc_atexit 080defe4 096fe4 000004 我试过这样的事情: awk '/PROGBITS/ {print $2,$4,$5,$6} ' 但问题是,[4]中有一个空间..,这意味着在4-9行,我必须使用 awk '/PROGBITS/ {print $3,$6,$7} ' 无论如何在获取我想要的所有列时使用单个命令..? 解决方法
使用gnu awk,您可以使用这种优雅的方式处理字段固定宽度的文本.它还将保留格式.
awk -v FIELDWIDTHS="5 18 16 8 7 8" '{print $2,$6}' file .init 080481c0 0001c0 00002e .plt 080481f0 0001f0 000110 .text 08048300 000300 07c95c __libc_thread_fre 080c4c60 07cc60 000076 __libc_freeres_fn 080c4ce0 07cce0 000b2f .fini 080c5810 07d810 00001a .rodata 080c5840 07d840 019774 __libc_thread_sub 080defb4 096fb4 000004 __libc_subfreeres 080defb8 096fb8 00002c __libc_atexit 080defe4 096fe4 000004 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |