웹사이트 검색

Linux에서 Awk와 함께 'next' 명령을 사용하는 방법 - 6부


Awk 시리즈의 여섯 번째 부분에서는 Awk에 제공한 나머지 모든 패턴과 표현식을 건너뛰고 대신 다음을 읽도록 지시하는 next 명령을 사용하는 방법을 살펴보겠습니다. 입력 라인.

next 명령은 명령 실행에서 시간 낭비 단계라고 부르는 작업이 실행되는 것을 방지하는 데 도움이 됩니다.

작동 방식을 이해하기 위해 다음과 같은 food_list.txt라는 파일을 고려해 보겠습니다.

No      Item_Name               Price           Quantity
1       Mangoes                 $3.45              5
2       Apples                  $2.45              25
3       Pineapples              $4.45              55
4       Tomatoes                $3.45              25
5       Onions                  $1.45              15
6       Bananas                 $3.45              30

각 줄 끝에 (*) 기호를 사용하여 수량이 20 이하인 식품 항목에 플래그를 지정하는 다음 명령을 실행해 보세요.

# awk '$4 <= 20 { printf "%s\t%s\n", $0,"*" ; } $4 > 20 { print $0 ;} ' food_list.txt 

No	Item_Name		Price		Quantity
1	Mangoes			$3.45		   5	*
2	Apples			$2.45              25
3	Pineapples		$4.45              55
4	Tomatoes		$3.45              25 
5	Onions			$1.45              15	*
6	Bananas	                $3.45              30

위의 명령은 실제로 다음과 같이 작동합니다.

  1. 먼저, 각 입력 줄의 네 번째 필드인 수량이 20보다 작거나 같은지 확인하고, 값이 해당 조건을 충족하면 인쇄되고 (*) 로 표시됩니다. 표현식 1을 사용하여 마지막에 서명합니다: $4 <= 20
  2. 둘째, 각 입력 줄의 네 번째 필드가 20보다 큰지 확인하고, 줄이 조건을 충족하면 표현식 2를 사용하여 인쇄됩니다: $4 > 20

그러나 여기에는 한 가지 문제가 있습니다. 첫 번째 표현식이 실행될 때 플래그를 지정하려는 행이 { printf "%s\t%s\n", $0, "**" ; } 그런 다음 같은 단계에서 두 번째 표현식도 확인하는데 이는 시간 낭비 요소가 됩니다.

따라서 첫 번째 표현식을 사용하여 인쇄된 이미 플래그가 지정된 행을 인쇄한 후 두 번째 표현식 $4 > 20을 다시 실행할 필요가 없습니다.

이 문제를 해결하려면 다음과 같이 next 명령을 사용해야 합니다.

# awk '$4 <= 20 { printf "%s\t%s\n", $0,"*" ; next; } $4 > 20 { print $0 ;} ' food_list.txt

No	Item_Name		Price		Quantity
1	Mangoes			$3.45		   5	*
2	Apples			$2.45              25
3	Pineapples		$4.45              55
4	Tomatoes		$3.45              25 
5	Onions			$1.45              15	*
6	Bananas	                $3.45              30

$4 <= 20 { printf "%s\t%s\n", $0,"*" 를 사용하여 단일 입력 줄을 인쇄한 후; 다음 ; }, 포함된 next 명령은 두 번째 표현식 $4 > 20 { print $0 ;}를 건너뛰는 데 도움이 되므로 실행은 다음으로 이동합니다. 수량이 20보다 큰지 확인하는 데 시간을 낭비할 필요 없이 다음 입력 라인을 확인합니다.

next 명령은 효율적인 명령을 작성하는 것이 매우 중요하며 필요한 경우 항상 스크립트 실행 속도를 높이는 데 사용할 수 있습니다. Awk에 대한 입력으로 표준 입력 (STDIN)을 사용하는 방법을 살펴볼 시리즈의 다음 부분을 준비하세요.

이 방법이 도움이 되기를 바랍니다. 아래 댓글 섹션에 댓글을 남겨 언제나처럼 생각을 글로 남길 수 있기를 바랍니다.