ウェブサイト検索

Linux の Awk で比較演算子を使用する方法 - パート 4


テキスト行内の数値または文字列値を扱う場合、 比較演算子を使用してテキストまたは文字列をフィルタリングすると、Awk コマンド ユーザーにとって便利です。

Awk シリーズのこのパートでは、比較演算子を使用してテキストまたは文字列をフィルタリングする方法を見ていきます。プログラマであれば、比較演算子についてはすでによく知っているはずですが、そうでない人のために、以下のセクションで説明しましょう。

Awk の比較演算子とは何ですか?

Awk の比較演算子は、数値または文字列の値を比較するために使用され、次のものが含まれます。

  1. > – より大きい
  2. < – より小さい
  3. >= – 以上
  4. <= – 以下
  5. == – と等しい
  6. != – 等しくない
  7. some_value ~/pattern/ – some_value がパターンと一致する場合は true
  8. some_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 つの重要なことが起こります。

  1. 最初の式 { アクション ; } の組み合わせ、 $3 <= 30 { printf “%s\t%s\n”, $0,”**” ; } は数量が 30 以下の行を出力し、各行の末尾に (**) を追加します。数量の値には、$3 フィールド変数を使用してアクセスします。
  2. 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 シリーズの次の部分を必ずお読みください。