그래서 기본적으로 다음과 같은 텍스트가 있습니다.
[ 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,$5,$6,$7} '
어쨌든 내가 원하는 모든 열을 가져 오는 동안 단일 명령 을 사용할 수 있습니까 ..?
으로 gnu awk
당신은 필드에 고정 폭 텍스트를 처리 할 수있는이 우아한 방법이있다. 서식도 유지됩니다.
awk -v FIELDWIDTHS="5 18 16 8 7 8" '{print $2,$4,$5,$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
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다