ウェブサイト検索

Linux で STDIN から Awk 入力を読み取る方法 - パート 7


Awk ツール シリーズの前の部分では、主にファイルからの入力の読み取りについて説明しましたが、STDIN から入力を読み取りたい場合はどうすればよいでしょうか。

Awk シリーズのこのパート 7 では、ファイルから入力を読み取る代わりに、他のコマンドの出力をフィルターできる例をいくつか見ていきます。

ls コマンドと同様に機能する dir ユーティリティから始めます。以下の最初の例では、dir -l コマンドの出力を Awk の入力として使用し、所有者のユーザー名、グループ名、および所有者のファイルを出力します。 /she は現在のディレクトリに所有しています:

dir -l | awk '{print $3, $4, $9;}'

awk 式を使用する別の例を見てください。ここでは、以下の awk コマンドのように、式を使用して文字列をフィルタリングすることにより、root ユーザーが所有するファイルを印刷したいと考えています。

dir -l | awk '$3=="root" {print $1,$3,$4, $9;} '

上記のコマンドには、root ユーザーが所有する現在のディレクトリ内のファイルをフィルタリングするのに役立つ (==) 比較演算子が含まれています。これは、式 $3== ”root ” を使用して実現されます。

awk 比較演算子を使用して特定の文字列と一致する別の例を見てみましょう。

ここでは、cat ユーティリティを使用して tecmint_deals.txt という名前のファイルの内容を表示し、Tech タイプの取引のみを表示したいので、次のコマンド:

cat tecmint_deals.txt
cat tecmint_deals.txt | awk '$4 ~ /tech/{print}'
cat tecmint_deals.txt | awk '$4 ~ /Tech/{print}'

上の例では、値 ~ /pattern/ 比較演算子を使用しましたが、非常に重要なことを明らかにするために 2 つのコマンドがあります。

パターン tech を指定してコマンドを実行すると、そのタイプの取引がないため何も出力されませんが、Tech を使用すると、 「技術」と入力します。

したがって、この比較演算子を使用するときは常に注意してください。上で見たように、大文字と小文字が区別されます。

ファイルから入力を読み取る代わりに、別のコマンドの出力を awk の入力としていつでも使用できます。これは、上記の例で見たように非常に簡単です。

例が理解できるほど明確であったことを願っています。懸念がある場合は、以下のコメント セクションを通じて表明してください。awk 機能について説明するシリーズの次の部分を忘れずに確認してください。たとえば変数数値式代入演算子など。