Linux
 Computer >> コンピューター >  >> システム >> Linux

AWKコマンドとスクリプトの書き方

awkコマンドは、テキストファイルを処理または分析するための強力な方法です。特に、行(行)と列で編成されたデータファイルを分析します。単純なawkコマンドはコマンドラインから実行できます。より複雑なタスクは、awkプログラム(awkスクリプトと呼ばれる)としてファイルに書き込む必要があります。

AWKコマンドとスクリプトの書き方

AWKの基本

awkコマンドの基本的な形式は次のようになります:

awk 'pattern {action}' input-file > output-file

これは、次のことを意味します。入力ファイルの各行を取得します。行にパターンが含まれている場合は、その行にアクションを適用し、結果の行を出力ファイルに書き込みます。パターンを省略すると、アクションはすべての行に適用されます。例:

awk '{ print $5 }' table1.txt > output1.txt

上記のステートメントは、各行の5列目の要素を取得し、それを出力ファイル「output.txt」に行として書き込みます。変数「$4」は4番目の列を参照します。同様に、$ 1、$ 2、$ 3などを使用して、1番目、2番目、および3番目の列にアクセスできます。デフォルトでは、列はスペースまたはタブ(いわゆる空白)で区切られていると見なされます。したがって、入力ファイル「table1.txt」に次の行が含まれている場合:

1, Justin Timberlake, Title 545, Price $7.30
2, Taylor Swift, Title 723, Price $7.90
3, Mick Jagger, Title 610, Price $7.90
4, Lady Gaga, Title 118, Price $7.30
5, Johnny Cash, Title 482, Price $6.50
6, Elvis Presley, Title 335, Price $7.30
7, John Lennon, Title 271, Price $7.90
8, Michael Jackson, Title 373, Price $5.50

次に、コマンドは次の行を出力ファイル「output1.txt」に書き込みます。

545,
723,
610,
118,
482,
335,
271,
373,

列区切り文字がスペースやタブ以外のもの(コンマなど)の場合は、awkステートメントで次のように指定できます。

awk -F, '{ print $3 }' table1.txt > output1.txt

これにより、列がコンマで区切られていると見なされる場合、各行の列3から要素が選択されます。したがって、この場合の出力は次のようになります。

Title 545
Title 723
Title 610
Title 118
Title 482
Title 335
Title 271
Title 373

AWKの条件式

中括弧('{'、'}')内のステートメントのリストは、ブロックと呼ばれます。ブロックの前に条件式を置くと、ブロック内のステートメントは、条件が真の場合にのみ実行されます。

awk '$7=="\$7.30" { print $3 }' table1.txt

この場合、条件は$ 7 =="\ $ 7.30"です。これは、列7の要素が$7.30に等しいことを意味します。ドル記号の前の円記号は、システムが$ 7を変数として解釈するのを防ぎ、代わりにドル記号を文字通りに解釈するために使用されます。

したがって、このawkステートメントは、各行の3列目に、列7に「$7.30」がある要素を出力します。

条件として正規表現を使用することもできます。例:

awk '/30/ { print $3 }' table1.txt

2つのスラッシュ('/')の間の文字列は、正規表現です。この場合は、文字列「30」だけです。これは、行に文字列「30」が含まれている場合、システムはその行の3番目の列にある要素を出力することを意味します。上記の例の出力は次のようになります。

Timberlake,
Gaga,
Presley,

AWKで計算を実行する

テーブル要素が数値の場合、awkは次の例のようにそれらに対して計算を実行できます。

awk '{ print ($2 * $3) + $7 }'

現在の行の要素($ 1、$ 2など)にアクセスする変数の他に、行全体(行)を参照する変数$ 0と、フィールドの数を保持する変数NFがあります。

次の例のように、新しい変数を定義することもできます。

awk '{ sum=0; for (col=1; col<=NF; col++) sum += $col; print sum; }'

これにより、各行のすべての要素の合計が計算されて出力されます。

Awkステートメントはsedコマンドと組み合わされることがよくあります。


  1. 基本的なChrome拡張機能を作成および作成する方法

    Chromeは、地球上で最も人気のあるWebブラウザです。 Statcounterのデスクトップブラウザの市場シェア調査によると、2017年後半の時点でChromeはデスクトップブラウザの市場のなんと65%を占めています。 このような市場を定義する力により、Chromeの設計が優先事項になりました。拡張機能についても同じことが言えます。Chromeは、拡張機能の最大のユーザーベースを提供し、Chromeウェブストアには何万もの拡張機能、テーマ、アプリが存在します。 トレンドに投資したい場合は、独自の基本的なChrome拡張機能を構築できます。基本的なWeb開発スキル(HTML、CSS、Ja

  2. iOS 13 で NFC タグを使用、読み書きする方法

    スマートフォンの最新バージョンでは、NFC は、ある電話から別の電話に情報を転送するのに役立つ機能です。 NFC は Near Field Communication の略です。スマートフォンとの間で情報を転送するために使用できるワイヤレス接続です。 この機能により、製品、サービス、ランドマーク、さらには人物に関する情報にすぐにアクセスできます。デバイスをワイヤレスで接続するには、一般に NFC タグと呼ばれる NFC で動作するスマート タグが必要です。 この記事では、iPhone での NFC タグ、NFC タグ ライター、および NFC リーダーの使用について説明します。 では、N