2008년 3월 14일 금요일

awk 사용하기 - 1

awk는 개발자의 삶을 편안하게 해주는 툴이다. 사용자가 얼마나 창의적으로 사용하는가에 따라서 여러가지 목적으로 사용될 수 있기 때문에, 사용법보다 응용법이 더 중요하다. 우선 사용법이 잘 정리된 사이트를 소개한다.

http://www.4ellene.net/tt/1087


아래는 개인적으로 개발시 많이 사용하는 사용예이다.

make | awk '{for(i=1;i<=NF; i++) print $i }'


큰 규모의 프로그램을 컴파일할 때는 컴파일 및 링크 옵션이 매우 복잡하고 파일 경로가 길 경우 화면에 출력되는 로그의 양이 엄청나다. 따라서 자칫 makefile에 옵션을 잘못 넣어도 이를 찾아내기도 어렵고, 컴파일 에러가 발생해도 바로 문제 위치를 찾기 어렵다. 이럴 때 위와 같이 사용하면 출력되는 로그가 공백을 기준으로 줄바꿈되며 정렬된다.

아래는 위 옵션 이 없이 make했을때의 결과이다.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gcc -c -DSPIDER_AP -DVER1 -DCOBRA_AP -DAR
5315 -DFREEDOM_AP -ID:/io-pkt/core_networ
king/stage/usr/include -IC:/QNX632/target
/qnx6/usr/include -I../common/include -Ii
nclude -I../../../../src/dk/mdk/client/co
bra/soc_linux/include -c -V3.3.5,gcc_ntop
pcbe -O2 -I. -I../../../include -I../mdk
-I../devmld -DMAUI -I../../../../src/dk/m
dk/client/soc_linux_driver/include -D:/Av
inashWork/AP61_LinuxART_v53b59/releases/l
inuxsrc/src/802_11/madwifi/madwifi/ath -I
D:/AvinashWork/AP61_LinuxART_v53b59/relea
ses/linuxsrc/src/802_11/madwifi/madwifi -
ID:/io-pkt/core_networking/trunk/sys/dev_
nda/ath_hal -DSOC_LINUX -DLinux -DQNX -DM
DK_AP -DARCH_BIG_ENDIAN -DSOC_AP -DENDIAN
_SWAP -I../devlib -I../devlib/ar5210 -I..
/devlib/ar5211 -I../devlib/ar5212 -I../de
vlib/ar2413 -I../devlib/ar6000 -I../devli
b/ar5513 -I../devlib/inis ../../../../src
/dk/mdk/common/linux_hw.c -o ../../../../
src/dk/mdk/client/cobra/soc_linux/obj/lin
ux_hw.o
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


awk를 사용하여 정리하면 다음 처럼 정렬되어 보인다.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
gcc
-c
-DSPIDER_AP
-DVER1
-DCOBRA_AP
-DAR5315
-DFREEDOM_AP
-ID:/io-pkt/core_networking/stage/usr/inc

lude
-IC:/QNX632/target/qnx6/usr/include
-I../common/include-Iinclude
-I../../../../src/dk/mdk/client/cobra/soc

_linux/include

(중략)

-I../devlib/ar5513
-I../devlib/inis ../../../../src/dk/mdk/c

ommon/linux_hw.c
-o
../../../../src/dk/mdk/client/cobra/soc_l

inux/obj/linux_hw.o
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

댓글 없음: