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를 기반으로 인쇄되는 것을 볼 수 있습니다.
- “TecMint.com ”인 필드 1은
$1
를 사용하여 액세스됩니다. - “is ”인 필드 2는
$2
를 사용하여 액세스됩니다. - “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_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에서 ($)
연산자를 사용하는 것은 쉘 스크립트에서 사용하는 것과 다르다는 점을 항상 기억하세요.
이 기사가 도움이 되었기를 바랍니다. 필요한 추가 정보나 질문이 있는 경우 댓글 섹션에 댓글을 게시할 수 있습니다.