bash script2023. 7. 14. 10:19

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/585615 

 

사실 이것은 이전에 정리해 두었던 "awk에서 출력할 위치(필드)를 변수로 지정하기"와 같은 종류의 내용이나, 개인적으로 실제 활용에서 혼동하는 경우가 간혹 있기에 별도로 정리해 두기로.

 

셸에서 사용하던 변수를 awk 내부 변수로 복사하기 위해 -v 옵션을 사용하는 방식이며, 여기서 기억할 점은 문자열을 그대로 출력할 것이기 때문에 awk 내부 변수에서 "$" 표시를 붙이지 말아야 한다는 점이다. 아래의 예시를 보자. my_file.txt 파일의 내용을 출력할 때, 각 행 앞에 셸 변수 str_var에 할당된 문자열(my_file:)을 삽입하고 탭(tab)으로 구분하는 경우다.
 
str_var="my_file:"
awk -v header_str="$str_var" '{ print header_str "\t" $0 }' my_file.txt

-v 옵션으로 awk 내부 변수 header_str을 정의하고 여기에 str_var에 할당된 문자열을 복사했다. awk의 print 명령에 인자로 사용된 header_str 변수 앞에 "$" 표시가 없음에 유의. 스크립트를 작성하다 보면 무의식적으로 변수 앞에 "$" 표시를 붙이다가 위와 같이 문자열을 awk 내부 변수에 할당해서 활용할 때 실수를 하는 경우가 있다.

 

 

728x90
Posted by 반달가면