웹사이트 검색

Linux에서 Awk와 함께 복합 표현식을 사용하는 방법 - 5부


지금까지 우리는 조건 충족 여부를 확인할 때 간단한 표현을 살펴보았습니다. 특정 조건을 확인하기 위해 두 개 이상의 표현식을 사용하려면 어떻게 해야 합니까?

이번 글에서는 텍스트나 문자열을 필터링할 때 조건을 확인하기 위해 복합 표현식이라 불리는 여러 표현식을 결합하는 방법을 살펴보겠습니다.

Awk에서 복합 표현식(and)라고 하는 &&| |(또는) 복합 연산자라고 합니다.

복합 표현식의 일반적인 구문은 다음과 같습니다.

( first_expression ) && ( second_expression )

여기서 first_expressionsecond_expression이 true여야 전체 표현식이 true가 됩니다.

( first_expression ) || ( second_expression) 

여기에서 first_expression 또는 second_expression 표현식 중 하나가 true여야 전체 표현식이 true가 됩니다.

주의: 항상 괄호를 포함해야 합니다.

awk 시리즈의 4부에서 살펴본 비교 연산자를 사용하여 표현식을 작성할 수 있습니다.

이제 아래 예를 사용하여 명확하게 이해해 보겠습니다.

이 예에는 놀라운 무작위 Tecmint 거래 목록이 포함된 tecmint_deals.txt라는 텍스트 파일이 있으며 거래 이름, 가격 및 유형이 포함되어 있습니다.

No      Name                                    Price           Type
1       Mac_OS_X_Cleanup_Suite                  $9.99           Software
2       Basics_Notebook                         $14.99          Lifestyle
3       Tactical_Pen                            $25.99          Lifestyle
4       Scapple                                 $19.00          Unknown
5       Nano_Tool_Pack                          $11.99          Unknown
6       Ditto_Bluetooth_Altering_Device         $33.00          Tech
7       Nano_Prowler_Mini_Drone                 $36.99          Tech 

$20 이상이고 끝에 (**) 기호를 사용하여 “Tech ” 유형의 거래만 인쇄하고 플래그를 지정한다고 가정해 보겠습니다. 각 라인의.

아래 명령을 실행해야 합니다.

# awk '($3 ~ /^$[2-9][0-9]*\.[0-9][0-9]$/) && ($4=="Tech") { printf "%s\t%s\n",$0,"*"; } ' tecmint_deals.txt 

6	Ditto_Bluetooth_Altering_Device		$33.00		Tech	*
7	Nano_Prowler_Mini_Drone			$36.99          Tech	 *

이 예에서는 복합 표현식에 두 개의 표현식을 사용했습니다.

  1. 첫 번째 표현식, ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/) ; 가격이 $20 이상인 거래가 있는 라인을 확인하고 가격인 $3 값이 /^\$[ 패턴과 일치하는 경우에만 true입니다. 2-9][0-9]*\.[0-9][0-9]$/
  2. 그리고 두 번째 표현인 ($4 == “Tech”) ; 거래 유형이 'Tech '인지 확인하고 $4 값이 'Tech '와 동일한 경우에만 true입니다.

첫 번째 표현식두 번째 표현식이 다음의 원칙에 따라 true인 경우 행은 (**)로만 표시됩니다. && 연산자.

요약

일부 조건에서는 원하는 것과 정확히 일치하도록 항상 복합 표현식을 작성해야 합니다. 비교 및 복합 표현식 연산자의 사용을 이해하면 어려운 조건을 기반으로 텍스트나 문자열을 필터링하는 것이 쉬워집니다.

이 가이드가 도움이 되기를 바라며 질문이나 추가 사항이 있는 경우 항상 의견을 남겨주시면 문제가 해결될 것입니다.