詳細、Linuxのawkコマンド

awkの
awkは、そのデータ分析とレポート作成における強力なテキスト分析を見つけるためにgrepをする相対的なツール、のsedの編集、awkのが特に強いです。AWKは、デフォルトの区切りスペースとして、単に行毎にファイルを読み取るために各スライス列、および、分析の種々の切断部分です。awkはラインプロセッサで、スクリーン処理に比べて利点が、大きなファイルを扱うときのメモリまたは低速の処理の問題のうち表示されていない、通常のテキスト情報をフォーマットするために使用

AWKプロセス順次各ラインを処理して出力

awkの使い方:
AWKパラメーター'BEGIN {} // {アクション1;アクション2}' END {} ファイル名

パラメータ: 

  • 区切り文字を指定-F
  • スクリプトを呼び出す-f
  • -v定義変数

それぞれの行を処理する前に、ブロック初期化} {開始、初期化コード、主にグローバル変数が使用され、セパレータはFSが設けられています。

//マッチングブロックは、文字列または正規表現かもしれ

{}コマンド・コード・ブロックは、1つのまたは複数のコマンド、複数のコマンドを含む、分離します

コードブロックのEND {}終わり、各コードブロック行処理が再度実行された後、主に最終的なダイジェスト情報又は出力端を算出します

例: '{、Xを "私が見つける" 印刷 "ルートライン"} BEGIN {X = 0} /ルート/ {X + = 1} END' ルートラインAWKの総数/ etc / passwdファイル統計/ etc / passwdファイルに含まれています

 

 

意味awkの文字:

  • $ 0が現在の行全体を表し
  • 行の最初のフィールドごとの$ 1
  • NFフィールド変数の数
  • 各ラインのNRレコード番号、マルチファイル記録インクリメント
  • FNRやNR似ていますが、より多くのドキュメントは最初から各ファイルをインクリメントされていません
  • \ Tタブ
  • \ N改行
  • FSは、区切り文字の定義を開始します
  • RS、レコード区切り文字入力、デフォルトの改行(すなわち、ラインごとに、テキスト入力のベースとなって)
  • 〜含まれてい
  • !〜含まれていません
  • ==等しい、すべて等しく、正確な比較でなければなりません
  • !=等しくない、正確な比較
  • &&論理AND
  • ||論理和(OR)
  • +表す少なくとも一つの一致、又はA
  • / [0-9] [0-9] + / 2以上のデジタル
  • / [0-9] [0-9] * /または1つ以上のデジタル
  • OFS出力フィールドセパレータが、デフォルトでは、スペースは、それが他に変更することができています
  • ORS出力レコードセパレータ、改行デフォルト、即ち、処理結果はラインによってスクリーン線に出力されます。
  • -F [#/]定義3つのデリミタ


print印刷

  • 印刷が指定されたコンテンツを印刷するための主なコマンドのawkで、あなたはまた、printf関数を使用することができます
  • AWK '{印刷}' / etc / passwdファイル== AWK '{$ 0印刷}' / etc / passwdファイル  
  • AWK「{プリント 『は、』}」の/ etc / passwdのpasswdの内容を出力するが、空白行の同じ数の出力せず、更に線でAWKプロセステキスト行を説明します
  • AWK「{印刷 『』}」の/ etc /出力ラインの同じ数、文字の一つの行にはpasswd
  • awkの-F:/ etc / passwdファイル==のawk -F '{$ 1印刷}' ":" '{$ 1印刷}' / etc / passwdファイル
  • AWK -F: '{$ 1 $ 2印刷}' 入力フィールド1、中間の仕切り
  • AWK -F:OFS = '{$ 1、$ 3 $ 6印刷}' "\ T" を/ etc / passwdファイル1,3,6出力フィールド、デリミタとしてタブ
  • AWK -F: '{$ 1印刷; $ 2を印刷}' / etc / passwdファイル入力フィールド2、改行
  • AWK -F:/ etc / passwdファイル入力フィールド1、中間パーティションに '{ "**" $ 2印刷$ 1印刷}' **
  • awkの-F: '{印刷 "名:" $ 1 "\ TID:" $ 3}' / etc / passwdファイルのカスタム形式の出力フィールド1,2
  • AWK -F:各表示ライン番号フィールドの/ etc / passwd '{NFを印刷}'
  • AWK -F:フィールド当たりのライン 'NF> 2 {印刷}' / etc / passwdファイル数が2印刷よりも大きいです
  • 5行目 'NR == 5 {印刷}' / etc / passwdファイルの印刷/ etc / passwdファイルアウト:awkの-F
  • awkの-F: 'NR == 5 | NR == 6 {印刷}' / etc / passwdファイルのプリントアウトは/ etcライン5とライン6 / passwdファイル
  • awkの-F: '!NR = 1 {印刷}' / etc / passwdファイルは、最初の行が表示されません
  • AWK -F: '{印刷> "1.TXT"}' / etc / passwdファイル出力します
  • AWK -F: '{印刷}' / etc / passwdファイル> 2.txt出力ファイルのリダイレクトに                                     

文字の一致

  • AWK -F: '/ルート/ {プリント}' は、/ etc / passwdファイルのラインアウトプリントは、ルートに含まれます
  • awkの-F:OK '/' $ A '/ {印刷}' / etc / passwdファイルには、変数$ Aをプリントアウト含まれています
  • awkの-F: '!/ルート/ {印刷}' / etc / passwdファイルには行がルートを持っていない出力します
  • awkの-F:「/ルート|トム/ {印刷}」は、/ etc /ラインアウトpasswdファイルのプリントは、ルートやタムに含まれています
  • AWK -F: '/メール/は、MySQL / {印刷}テストメールを含むファイルの行アウト印刷*のMySQL、*はゼロ又は任意の数の文字を表します。
  • AWK -F: '/ ^ [2] [7] [7] * / {印刷}' 線27の先頭にファイルアウトテストプリント、及び27,277,27gffなどのような
  •  
  • awkの-F:フィールドの最初の行をプリントアウトするために '$ 1〜/ルート/ {印刷}' / etc / passwdファイルはrootです
  • AWK -F '($ 1 == 『ルート』){印刷}フィールドの最初のラインを印刷するには、/ etc / passwdファイルは、上記に相当するルートであります
  • awkの-F:フィールドの最初の行をプリントアウトするために「!$ 1~ /ルート/ {印刷}」/ etc / passwdファイルはルートではありません
  • awkの-F:「(!$ 1 = 『ルート』){印刷}」フィールドの最初の行をプリントアウトするには、/ etc / passwdファイルは、上記に相当するルートではありません
  • awkの-F: '$ 1〜/ルート| FTP / {印刷}' ルートまたは最初のフィールドラインのftpアウト/ etc / passwdファイルの印刷
  • AWK -F '($ 1 == "ルート" || $ 1 == "FTP"){プリント}' は、上記と同等の/最初のフィールドまたはFTPルートラインアウトetc / passwdファイルの印刷、
  • awkの-F:「!$ 1~ /ルート| FTP / {印刷}」フィールドの最初の行をプリントアウトするには、/ etc / passwdファイルではなく、FTPルートかではありません
  • AWK -F:フィールドの最初のラインを印刷する '(!! $ 1 = "ルート" || $ 1 = "FTP"){プリント}' / etc / passwdファイルは、FTP、上記と同等のルートではありませんか
  • awkの-F: '{($ 1〜/メール/)場合、{他} $ 1印刷{} $ 2印刷}' / etc / passwdファイル最初のフィールドは、メールの場合は、最初のフィールドを印刷するか、2番目のフィールドを印刷


フォーマットされた出力
AWK '{printfの"%-5S% .2d"、$ 1、$ 2}'試験

  • printfの出力形式表現
  • %フォーマットされた出力デリミタ
  • -8 8文字の長さであります
  • sは文字列型を表し、Dは小数点を表します

例えば:
1、ディスプレイの/ etc /ルートラインに含まPASSWD
'/ルート/' / etc / passwdファイルAWK
各行の最初のフィールドで分離され、ディスプレイの/ etc / passwdおよび7に、2
AWK -F ":" '{$ 1を印刷 $ 7}' / etc / passwdファイルまたはAWK '{FS =の":"} BEGIN {。。$を印刷1、$ 7}' / etc / passwdファイル
3へ:分離、表示/ etc / passwdファイルに第一及び第フィールドのルートを持つ行が
-Fをawkは":" '/ルート/ {印刷$ 1、$ 7}' / etc / passwdファイル
4に:分離、表示/ etc / passwdファイルの行ルートから始まります第一及び第フィールドは
-Fをawkは":" '/ ^ルート/ {$ 1を印刷$ 7}' / etc / passwdファイル
。5、順番に:分離し、第3フィールドの表示/ etc / passwdファイルは、999よりも大きいです最初の行と7番目のフィールドの
AWKの-F ":" '$ 3>の999 {$を$ 1印刷7。}' / etc / passwdファイル
6、へ:分離し、7番目のフィールドの表示/ etc / passwdファイルは、bashのを含んでいます最初の行と7番目のフィールドの
AWKの-F ":" '$〜7 "bashの"プリント{$ 1、$} 7。' / etc / passwdファイル
7、順番に:別居、7番目のフィールドの表示/ etc / passwdファイルは、行のbashの第一及び第七列が含まれていない
awkの-Fを":" '!$は/ etc 7〜 "nologinに" {$ 7 $ 1を印刷}' / passwdの
8 ,:分離され、第一及び第七のフィールド$ 3>の999及び第7フィールドの表示は、bashの行含ま
AWK -fを":" '$ 3 > 999 && $ 7〜 "bashの" {$ 1、$ 7印刷します}' / etc / passwdファイル
9、順番に:セパレータとして、第一及び第フィールドの表示$ 3>の999又は第7フィールドはbashの行含ま
AWK -fを":"「$ 3 > 999 || $ 7〜 "bashの" { $ 1、$ 7} 'PRINT / etc / passwdファイルを

おすすめ

転載: www.cnblogs.com/sx66/p/11892274.html