LinuxでAwkで複合式を使用する方法-パート5


ずっと、条件が満たされているかどうかをチェックするとき、私たちは単純な表現を見てきました。複数の式を使用して特定の条件をチェックする場合はどうなりますか?

この記事では、複合式と呼ばれる複数の式を組み合わせて、テキストまたは文字列をフィルタリングするときに条件を確認する方法について説明します。

Awkでは、複合式は(and)と呼ばれる && (or)と呼ばれる || を使用して作成されます。 複合演算子。

複合式の一般的な構文は次のとおりです。

( first_expression ) && ( second_expression )

ここで、式全体をtrueにするには、 first_expression second_expression がtrueである必要があります。

( first_expression ) || ( second_expression) 

ここで、式全体がtrueになるには、 first_expression または second_expression のいずれかの式がtrueである必要があります。

注意:常に括弧を含めることを忘れないでください。

式は、awkシリーズのパート4で見た比較演算子を使用して作成できます。

以下の例を使用して、明確に理解しましょう。

この例では、 tecmint_deals.txt という名前のテキストファイルがあります。このファイルには、いくつかの驚くべきランダムなTecmint取引のリストが含まれており、取引の名前、価格、およびタイプが含まれています。

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 

各行の終わりに(**)記号を使用して、0を超え、タイプが「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	 *

この例では、複合式で2つの式を使用しています。

  1. First expression, ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/) ; checks the for lines with deals with price above $20, and it is only true if the value of $3 which is the price matches the pattern /^\$[2-9][0-9]*\.[0-9][0-9]$/
  2. And the second expression, ($4 == “Tech”) ; checks whether the deal is of type “Tech” and it is only true if the value of $4 equals to “Tech”.

&& 演算子の原則を述べているように、最初の式と2番目の式が真である場合にのみ、行に(**)のフラグが付けられることに注意してください。

概要

一部の条件では、必要なものと完全に一致するように複合式を作成する必要があります。比較演算子と複合式演算子の使用法を理解すると、いくつかの難しい条件に基づいてテキストまたは文字列をフィルタリングすることが容易になります。

このガイドがお役に立てば幸いです。質問や追加がある場合は、必ずコメントを残してください。それに応じて懸念事項が解決されます。