웹사이트 검색

Awk를 사용하여 파일의 필드와 열을 인쇄하는 방법


Linux Awk 명령 시리즈의 이번 부분에서는 Awk의 가장 중요한 기능 중 하나인 필드 편집을 살펴보겠습니다.

Awk는 제공된 입력 행을 자동으로 필드로 나누고, 필드는 내부 필드 구분 기호로 다른 필드와 구분되는 문자 집합으로 정의될 수 있다는 점을 알아두면 좋습니다.

Unix/Linux에 익숙하거나 bash 쉘 프로그래밍을 수행하는 경우 내부 필드 구분 기호(IFS) 변수가 무엇인지 알아야 합니다. Awk의 기본 IFS는 탭과 공백입니다.

이것이 Awk에서 필드 분리 아이디어가 작동하는 방식입니다. 정의된 IFS에 따라 입력 행을 만나면 첫 번째 문자 세트는 필드 1이며 $1<을 사용하여 액세스됩니다., 두 번째 문자 세트는 $2를 사용하여 액세스되는 필드 2이고, 세 번째 문자 세트는 $3을 사용하여 액세스되는 필드 3입니다. 마지막 문자 세트까지.

이 Awk 필드 편집을 더 잘 이해하려면 아래 예를 살펴보겠습니다.

예 1: tecmintinfo.txt라는 텍스트 파일을 만들었습니다.

vi tecmintinfo.txt
cat tecmintinfo.txt

그런 다음 명령줄에서 tecmintinfo.txt파일의 첫 번째, 두 번째세 번째 필드를 인쇄하려고 합니다. > 아래 명령을 사용합니다.

$ awk '//{print $1 $2 $3 }' tecmintinfo.txt

TecMint.comisthe

위 출력에서 처음 세 필드의 문자가 공백으로 정의된 IFS를 기반으로 인쇄되는 것을 볼 수 있습니다.

  1. “TecMint.com ”인 필드 1은 $1를 사용하여 액세스됩니다.
  2. “is ”인 필드 2는 $2를 사용하여 액세스됩니다.
  3. “the ”인 필드 3은 $3을 사용하여 액세스됩니다.

인쇄된 출력에서 발견한 경우 필드 값은 구분되지 않으며 이것이 기본적으로 인쇄가 작동하는 방식입니다.

필드 값 사이에 공백이 있는 출력을 명확하게 보려면 다음과 같이 (,) 연산자를 추가해야 합니다.

$ awk '//{print $1, $2, $3; }' tecmintinfo.txt

TecMint.com is the

주목하고 항상 기억해야 할 중요한 점은 Awk에서 ($)를 사용하는 것이 쉘 스크립트에서 사용하는 것과 다르다는 것입니다.

쉘 스크립팅에서 ($)는 변수 값에 액세스하는 데 사용되는 반면, Awk ($)에서는 변수의 내용에 액세스할 때만 사용됩니다. 필드이지만 변수 값에 액세스하기 위한 것은 아닙니다.

예 2: my_shoping.list라는 여러 줄이 포함된 파일을 사용하여 다른 예를 살펴보겠습니다.

No	Item_Name		Unit_Price	Quantity	Price
1	Mouse			#20,000		   1		#20,000
2 	Monitor			#500,000	   1		#500,000
3	RAM_Chips		#150,000	   2		#300,000
4	Ethernet_Cables	        #30,000		   4		#120,000		

쇼핑 목록에 있는 각 항목의 Unit_Price만 인쇄하고 싶다면 아래 명령을 실행해야 합니다.

$ awk '//{print $2, $3 }' my_shopping.txt 

Item_Name Unit_Price
Mouse #20,000
Monitor #500,000
RAM_Chips #150,000
Ethernet_Cables #30,000

Awk에는 출력 형식을 지정하는 데 도움이 되는 printf 명령도 있습니다. 이는 위 출력이 충분히 명확하지 않다는 것을 알 수 있는 좋은 방법입니다.

printf를 사용하여 Item_NameUnit_Price 출력 형식 지정:

$ awk '//{printf "%-10s %s\n",$2, $3 }' my_shopping.txt 

Item_Name  Unit_Price
Mouse      #20,000
Monitor    #500,000
RAM_Chips  #150,000
Ethernet_Cables #30,000

요약

Awk를 사용하여 텍스트나 문자열을 필터링할 때 필드 편집은 매우 중요합니다. 이는 목록 열의 특정 데이터를 얻는 데 도움이 됩니다. 그리고 Awk에서 ($) 연산자를 사용하는 것은 쉘 스크립트에서 사용하는 것과 다르다는 점을 항상 기억하세요.

이 기사가 도움이 되었기를 바랍니다. 필요한 추가 정보나 질문이 있는 경우 댓글 섹션에 댓글을 게시할 수 있습니다.