awk の最も基本的な機能は、ファイルまたは文字列内の指定されたルールに基づいて情報を参照および抽出することです。これは、処理のために 1 行を複数の「フィールド」に分割するために使用されます。小規模なデータの処理に適しています。
例:
Cat /etc/passwd | awk '{FS=":"}$3
awk [-Field-separator] 'commands' input-file(s) など
ここのコマンドは実際の awk コマンドです。[-F ドメイン区切り文字] はオプションです。awk はデフォルトでスペースを使用して区切ります。そのため、フィールド間にスペースがあるテキストを参照したい場合は、このオプションを指定する必要はありませんが、 passwd などのファイルを参照すると、このファイルは、ドメインが区切り文字としてコロンを使用する場合は、-F オプションを使用する必要があります: awk -F : 'commands' input-file
awk が実行されると、その閲覧マークは $1、$2...$n です。この方法はドメインにラベルを付けると呼ばれます。 1 番目と 3 番目のフィールドを参照するには、$1 と $3 を使用します。フィールドの区切りにはカンマが使用され、$0 はすべてのフィールドを使用することを意味します。例:
awk '{print $0}' temp.txt > sav.txt
は、すべてのフィールドを出力し、結果を sav.txt にリダイレクトすることを意味します
awk '{print $0}' temp.txt | tee sav.txt
上の例と同様ですが、画面に表示される点が異なります
awk '{print $1,$4}' temp.txt
のみ最初の 1 番目と 4 番目のドメインを出力します
awk 'BEGIN {print "NAME GRADEn----"} {print $1"t"$4}' temp.txt
は、ヘッダー、つまり入力 コンテンツの最初の行の前に「NAME GRADEn---------------」を追加し、コンテンツをタブで区切ります
awk 'BEGIN {print "being" } {print $1} END {print "end"}' temp
情報ヘッダーと情報末尾を同時に出力します
条件演算子:
<, <=,==,!= , >=, ~ は正規表現に一致しますが、!~ は正規表現に一致しません
一致: awk '{if ($4~/ASIMA/) print $0}' temp は次のことを意味します4 番目のドメインに ASIMA が含まれている場合、
全体を印刷します
完全一致: awk '$3=="48" {print $0}' temp 3 番目のフィールドが "48" に等しいレコードのみを印刷します
不一致: awk '$0 !~ /ASIMA/ ' temp ASIMA を除くレコード全体を出力します
以下に等しくない: awk '$1 != "asima"' temp
以下の場合: awk '{if ($1< ;$2) print $1 "is small"} ' temp
大文字と小文字を設定: awk '/[Gg]reen/' temp 緑または緑を含むレコード全体を印刷します
任意の文字: awk '$1 ~/ ^...a/' temp 最初のフィールドの 4 番目の文字が a であるレコードを出力します。記号 '^' は行の先頭を表し、'.' は任意の文字
を表します。 awk '$0~/(abc)|(efg)/ ' temp | を使用する場合、ステートメントを囲む必要があります
AND および関係: awk '{if ( $1=="a" && $2=="b) " ) print $0}' temp
OR or 関係: awk '{if ($1=="a" || $1=="b") print $0}' temp
awk 組み込み変数:
例: awk 'END {print NR}' temp in 最後に読み取ったレコード数を出力します
awk '{print NF, NR, $0} END {print FILENAME}' temp
awk '{if (NR>0 && $4~/Brown/) print $0} ' temp 少なくとも 1 つのレコードがあり、Brown
が含まれています
NF の別の使用法: echo $PWD -F/ '{print $NF | }' 現在のディレクトリ名を表示します
実行モード: awk '条件タイプ 1{アクション 1} 条件タイプ 2{アクション 2} ...' ファイル名
# last | awk '{print $1 "t" $3}' <== ログインデータを表示し、ログイン名と IP アドレスのみを表示し、awk の組み込み変数を [tab] で区切ります。 name
NF 各行のフィールドの合計数 ($0)
NR awk によって現在処理されているデータの行
FS は区切り文字を指定します。デフォルトはスペースバーです