GNU/Linux >> Linux の 問題 >  >> Linux

Linux AWKコマンド–LinuxおよびUnixの使用構文の例

この初心者向けガイドでは、 awkの非常に基本的なことを学びます。 指図。また、テキストを処理するときに使用できるいくつかの方法もわかります。

始めましょう!

awkとは コマンド?

awk はスクリプト言語であり、コマンドラインで作業するときに役立ちます。また、テキスト処理に広く使用されているコマンドです。

awkを使用する場合 、提供するパターンに基づいて、データ(1つ以上の個別のテキスト)を選択できます。

たとえば、 awkで実行できる操作の一部 与えられたテキストの中で特定の単語やパターンを検索している、あるいは提供したファイルの特定の行や特定の列を選択している。

awkの基本構文 コマンド

最も単純な形式では、 awk コマンドの後には、検索するファイルの名前が最後に記載された、一重引用符と中括弧のセットが続きます。

次のようになります:

awk '{action}' your_file_name.txt

特定のパターンを持つテキストを検索する場合、またはテキスト内の特定の単語を検索する場合、コマンドは次のようになります。

awk '/regex pattern/{action}' your_file_name.txt
サンプルファイルの作成方法

コマンドラインでファイルを作成するには、 touchを使用します 指図。
例: touch filename.txt ここで、 filename 、はファイルの名前です。

その後、 openを使用できます コマンド( open filename.txt )、テキストエディットなどのワードプロセッサプログラムが開き、ファイルの内容を追加できます。

したがって、テキストファイル information.txtがあるとします。 、異なる列に分割されたデータが含まれています。

ファイルの内容は次のようになります。

fristName       lastName        age     city       ID

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Wood            Tinker          54      Lisbon     N/A
Giorgos         Georgiou        35      London     300
Timmy           Turner          32      Berlin     N/A

私の例では、 firstNameの列が1つあります 、 lastName age city 、および ID

cat text_file と入力すると、いつでもファイルの内容の出力を表示できます。 、ここで text_file ファイルの名前です。

awkを使用してファイルのすべてのコンテンツを印刷する方法

すべてを印刷するには ファイルの内容、中括弧内で指定するアクションは print $ 0です。 。

これは、 catとまったく同じように機能します 前述のコマンド。

awk '{print $0}' information.txt

Ouptut:

fristName       lastName        age     city       ID

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Wood            Tinker          54      Lisbon     N/A
Giorgos         Georgiou        35      London     300
Timmy           Turner          32      Berlin     N/A

各行に行番号をカウントする場合は、 NRを使用します。 組み込み変数:

awk '{print NR,$0}' information.txt 
1 fristName     lastName        age     city       ID
2 
3 Thomas        Shelby          30      Rio        400
4 Omega         Night           45      Ontario    600
5 Wood          Tinker          54      Lisbon     N/A
6 Giorgos       Georgiou        35      London     300
7 Timmy         Turner          32      Berlin     N/A

awkを使用して特定の列を印刷する方法

awkを使用する場合 、印刷する特定の列を指定できます。

最初の列を印刷するには、次のコマンドを使用します:

awk '{print $1}' information.txt

Ouput:

Thomas
Omega
Wood
Giorgos
Timmy

$ 1 最初のフィールド、この場合は最初の列を表します。

2番目の列を印刷するには、 $ 2を使用します :

awk '{print $2}' information.txt

出力:

lastName

Shelby
Night
Tinker
Georgiou
Turner

awkの方法 デフォルトでは、各列の開始位置と終了位置をスペースで決定します。

複数の列(たとえば、最初と4番目の列)を印刷するには、次のようにします。

awk '{print $1, $4}' information.txt

Ouput:

fristName city
 
Thomas    Rio
Omega     Ontario
Wood      Lisbon
Giorgos   London
Timmy     Berlin

$ 1 最初の入力フィールド(最初の列)と $ 4を表します 4番目を表します。それらをコンマで区切ります。$1、$ 4 、したがって、出力にはスペースがあり、読みやすくなります。

最後のフィールド(最後の列)を印刷するには、 $ NFを使用することもできます これは最後を表します レコードのフィールド:

awk '{print $NF}' information.txt 

出力:

ID

400
600
N/A
300
N/A
列の特定の行を印刷する方法

選択した列から印刷する行を指定することもできます:

awk '{print $1}' information.txt | head -1 

Ouput:

FirstName

そのコマンドを分解してみましょう。 awk'{print $ 1}' information.txt 最初の列を印刷します。次に、そのコマンドの出力(前に見た)がパイプされます 、パイプ記号 |を使用 、headコマンドに、その -1 引数は列の最初の行を選択します。

2行を印刷したい場合は、次のようにします。

awk '{print $1}' information.txt | head -2 

出力:

FirstName
Dionysia

awkで特定のパターンの線を印刷する方法

開始の行を印刷できます 特定の文字で。

例:

awk '/^O/' information.txt

出力:

Omega           Night           45      Ontario    600

このコマンドは、開始するテキストを含む行を選択します Oを使用 。

上矢印記号( ^ )を使用します )最初に、行の先頭を示し、次に行を開始する文字を示します。

終了する行を印刷することもできます 特定のパターンで:

awk '/0$/' information.txt 

出力:

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Giorgos         Georgiou        35      London     300

これにより、 0で終わる行が出力されます。 – $ 記号は、行の終わり方を示すために文字の後に使用されます。

そのコマンドは次のように変更することもできます:

awk '! /0$/' information.txt 

NOTとして使用されます したがって、この場合は、 0で終わらない行を選択します。 。

fristName       lastName        age     city       ID

Wood            Tinker          54      Lisbon     N/A
Timmy           Turner          32      Berlin     N/A

awkで正規表現を使用する方法

特定の文字を含む単語を出力し、指定したパターンに一致する単語を印刷するには、スラッシュ //を再度使用します。 、前に示しました。

onを含む単語を検索する場合 、あなたはそうするでしょう:

awk ' /io/{print $0}' information.txt 

出力:

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Giorgos         Georgiou        35      London     300

これは、 ioを含むすべてのエントリに一致します 。

余分な列があったとしましょう–部門 列:

fristName       lastName        age     city       ID   department

Thomas          Shelby          30      Rio        400  IT
Omega           Night           45      Ontario    600  Design
Wood            Tinker          54      Lisbon     N/A  IT
Giorgos         Georgiou        35      London     300  Data
Timmy           Turner          32      Berlin     N/A  Engineering

ITで働く人々のすべての情報を見つけるため 、スラッシュの間に検索する文字列 //を指定する必要があります :

awk '/IT/' information.txt 

出力:

Thomas          Shelby          30      Rio        400  IT
Wood            Tinker          54      Lisbon     N/A  IT

ITで働いている人の名前と名前だけを表示したい場合はどうでしょうか。 ?

次のように列を指定できます:

awk '/IT/{print $1, $2}' information.txt 

出力:

Thomas Shelby
Wood   Tinker

これにより、 ITの最初と2番目の列のみが表示されます すべてのフィールドを表示する代わりに、が表示されます。

特定のパターンの単語を検索する場合、次のようにエスケープ文字を使用する必要がある場合があります。

awk '/N\/A$/' information.txt 

出力:

Wood            Tinker          54      Lisbon     N/A
Timmy           Turner          32      Berlin     N/A

パターンN/ Aで終わる行を見つけたかった 。

したがって、'//'間を検索する場合 これまでに示したように、エスケープ文字( \ )を使用する必要がありました ) N / Aの間 、そうでないとエラーが発生します。

awkで比較演算子を使用する方法

たとえば、 40未満の従業員のすべての情報を検索したい場合 、<を使用します そのような比較演算子:

awk '$3 <  40 { print $0 }' information.txt

出力:

Thomas          Shelby          30      Rio        400
Giorgos         Georgiou        35      London     300
Timmy           Turner          32      Berlin     N/A

出力には、40歳未満の人の情報のみが表示されます。

結論

そして、あなたはそれを持っています!これで、 awkでの作業を開始するための絶対的な基本がわかりました。 テキストデータを操作します。

Linuxの詳細については、freeCodeCampにさまざまな学習資料が用意されています。

始めるためのいくつかを次に示します。

  • Linuxの基本-ハンズオンワークショップ
  • 倫理的ハッカーのためのLinux(Kali Linuxチュートリアル)
  • Linuxコマンドハンドブック

読んでくれてありがとう😊


Linux
  1. Linuxのfindコマンドの使用–例を使用した使用法

  2. Linux および Unix でファイルをコピーする方法10 cp コマンドの例

  3. Linux での awk コマンドの例

  1. Linux Catコマンド:使用法と例

  2. Linux Sedコマンド:使用法と例

  3. Linuxコマンド-概要と例

  1. Linuxでのddコマンドの5つの実用例

  2. UNIX / Linux:10 の Netstat コマンドの例

  3. 10 Linux / UNIX での Xargs コマンドの例