ホームページ  >  記事  >  php教程  >  AWKコマンドの使用法

AWKコマンドの使用法

高洛峰
高洛峰オリジナル
2016-12-12 16:02:011339ブラウズ

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内置变量

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 は区切り文字を指定します。デフォルトはスペースバーです



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。