Linux の Awk で複合式を使用する方法 - パート 5
私たちはずっと、条件が満たされているかどうかを確認する際の単純な式に注目してきました。特定の条件をチェックするために複数の式を使用したい場合はどうすればよいでしょうか?
この記事では、複合式と呼ばれる複数の式を組み合わせて、テキストまたは文字列をフィルタリングするときに条件をチェックする方法を説明します。
Awk では、複合式は、(and)
と呼ばれる &&
と | を使用して構築されます。 |
は、(または)
複合演算子と呼ばれます。
複合式の一般的な構文は次のとおりです。
( first_expression ) && ( second_expression )
ここで、式全体を true にするには、first_expression
と first_expression
が true である必要があります。
( first_expression ) || ( second_expression)
ここで、式全体が true になるには、first_expression
または first_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
$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 *
この例では、複合式で 2 つの式を使用しました。
- 最初の式、 ($3 ~ /^\$[2-9][0-9]*\.[0-9][0-9]$/) ; $20 を超える価格の取引がある行をチェックします。価格である $3 の値がパターン /^\$[ に一致する場合にのみ true になります。 2-9][0-9]*\.[0-9][0-9]$/
- 2 番目の式は、 ($4 == “Tech”) ;取引のタイプが 「技術」 であるかどうかを確認します。これは、$4 の値が 「技術」 に等しい場合にのみ真となります。
の原則にあるように、最初の式と2 番目の式が true の場合、行には (**)
のフラグが立てられるだけであることに注意してください。 &&
演算子。
まとめ
一部の条件では、必要なものと正確に一致させるために、常に複合式を作成する必要があります。比較演算子と複合式演算子の使用法を理解すると、難しい条件に基づいてテキストや文字列をフィルタリングすることが簡単になります。
このガイドがお役に立てば幸いです。質問や追加がある場合は、必ずコメントを残してください。そうすれば、あなたの懸念はそれに応じて解決されます。