Linux の Awk で比較演算子を使用する方法 - パート 4
テキスト行内の数値または文字列値を扱う場合、 比較演算子を使用してテキストまたは文字列をフィルタリングすると、Awk コマンド ユーザーにとって便利です。
Awk シリーズのこのパートでは、比較演算子を使用してテキストまたは文字列をフィルタリングする方法を見ていきます。プログラマであれば、比較演算子についてはすでによく知っているはずですが、そうでない人のために、以下のセクションで説明しましょう。
Awk の比較演算子とは何ですか?
Awk の比較演算子は、数値または文字列の値を比較するために使用され、次のものが含まれます。
>
– より大きい<
– より小さい>=
– 以上<=
– 以下==
– と等しい!=
– 等しくないsome_value ~/pattern/
– some_value がパターンと一致する場合は truesome_value !~/pattern/
– some_value がパターンと一致しない場合は true
Awk のさまざまな比較演算子を説明したので、例を使用してそれらをより深く理解してみましょう。
この例では、さまざまな食品の買い物リストである food_list.txt という名前のファイルがあり、( **)
は各行の末尾にあります。
No Item_Name Quantity Price
1 Mangoes 45 $3.45
2 Apples 25 $2.45
3 Pineapples 5 $4.45
4 Tomatoes 25 $3.45
5 Onions 15 $1.45
6 Bananas 30 $3.45
Awk で比較演算子を使用するための一般的な構文は次のとおりです。
expression { actions; }
上記の目標を達成するには、以下のコマンドを実行する必要があります。
# awk '$3 <= 30 { printf "%s\t%s\n", $0,"**" ; } $3 > 30 { print $0 ;}' food_list.txt
No Item_Name` Quantity Price
1 Mangoes 45 $3.45
2 Apples 25 $2.45 **
3 Pineapples 5 $4.45 **
4 Tomatoes 25 $3.45 **
5 Onions 15 $1.45 **
6 Bananas 30 $3.45 **
上の例では、次の 2 つの重要なことが起こります。
- 最初の式 { アクション ; } の組み合わせ、 $3 <= 30 { printf “%s\t%s\n”, $0,”**” ; } は数量が 30 以下の行を出力し、各行の末尾に (**) を追加します。数量の値には、$3 フィールド変数を使用してアクセスします。
- 2 番目の式 { アクション ; } の組み合わせ、 $3 > 30 { print $0 ;} は、数量が 30 を超えているため、行を変更せずに出力します。
もう 1 つの例:
# awk '$3 <= 20 { printf "%s\t%s\n", $0,"TRUE" ; } $3 > 20 { print $0 ;} ' food_list.txt
No Item_Name Quantity Price
1 Mangoes 45 $3.45
2 Apples 25 $2.45
3 Pineapples 5 $4.45 TRUE
4 Tomatoes 25 $3.45
5 Onions 15 $1.45 TRUE
6 Bananas 30 $3.45
この例では、数量が 20 以下の行の末尾に単語 (TRUE) を付けて示します。
まとめ
これはAwk の比較演算子の入門チュートリアルであるため、他の多くのオプションを試してさらに発見する必要があります。
直面している問題や追加点がある場合は、下のコメント セクションにコメントを書き込んでください。複合式について説明する Awk シリーズの次の部分を必ずお読みください。