Awk를 사용하여 파일의 필드와 열을 인쇄하는 방법
Linux Awk 명령 시리즈의이 부분에서는 Awk의 가장 중요한 기능 중 하나 인 필드 편집을 살펴 보겠습니다.
Awk는 제공된 입력 줄을 필드로 자동으로 나누고 필드는 내부 필드 구분 기호로 다른 필드와 구분되는 문자 집합으로 정의 할 수 있다는 것을 아는 것이 좋습니다.

Unix/Linux에 익숙하거나 bash 쉘 프로그래밍을 수행하는 경우 내부 필드 구분자 (IFS) 변수가 무엇인지 알아야합니다. "Awk의 기본 IFS는 탭과 공백입니다.
이것이 Awk에서 필드 분리 개념이 작동하는 방식입니다. IFS 정의에 따라 입력 행을 만나면 첫 번째 문자 세트는를 사용하여 액세스되는 필드 1이고 두 번째 문자 세트는 필드 2입니다. 를 사용하여 액세스하면 세 번째 문자 집합은 필드 3이며 마지막 문자 집합까지 등을 사용하여 액세스합니다.
이 Awk 필드 편집을 더 잘 이해하기 위해 아래 예제를 살펴 보겠습니다.
예 1 : tecmintinfo.txt라는 텍스트 파일을 만들었습니다.
# vi tecmintinfo.txt # cat tecmintinfo.txt

그런 다음 명령 줄에서 아래 명령을 사용하여 tecmintinfo.txt 파일의 첫 번째, 두 번째 및 세 번째 필드를 인쇄하려고합니다.
$ awk '//{print $1 $2 $3 }' tecmintinfo.txt TecMint.comisthe
위의 출력에서 처음 세 필드의 문자가 공백으로 정의 된 IFS를 기반으로 인쇄되었음을 알 수 있습니다.
- Field one which is “TecMint.com” is accessed using
$1
. - Field two which is “is” is accessed using
$2
. - Field three which is “the” is accessed using
$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_Name 및 Unit_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에서 ($)
연산자를 사용하는 것은 쉘 스크립팅에서 사용하는 것과 다릅니다.
이 기사가 도움이 되었기를 바랍니다. 추가 정보가 필요하거나 질문이 있으면 댓글 섹션에 댓글을 게시 할 수 있습니다.