、awkは内蔵のパラメータ
$ 0:現在の行全体を表し
$ 1:最初のフィールドの各ライン
$ 2:第2フィールドの各ライン
$ N:N番目のフィールドの各行に
awkのパラメータ:区切り文字
-Fセパレータセットセパレータ(デフォルトではスペース)
単一のフィールドを印刷:
awkの-F ':' '' {$ 3印刷} / etc / passwdファイル
複数のフィールドを印刷:
AWK -F ':' '/ etc / passwdファイル' {$ 1、$ 3印刷}
AWK -F ':' '{のprintf( "ユーザー:%sのUID:%のSの\ n"、$ 1、$ 3)}' / etc / passwdファイル
awkの-F ':' '{印刷 "ユーザー:" $ 1 "\ tの" UID: "$ 3"}' / etc / passwdファイル
NR:それぞれの行番号
NF:フィールドの数
AWK -F ':' '{印刷NR、NF、FILENAME} / ECT / passwdの
ケース#:
1は、/ etc / passwdのユーザ名IDは、行番号とユーザ名100よりも大きいです
AWK -F ":" '{IF($ 3>の100)印刷NR、$ 1}' / etc / passwdファイル
AWK -F ":" '$ 3>の100 {印刷NR、$ 1}' / etc / passwdファイル
訪問の43.226.164.120日:2、ログサーバのIPを見つけます。
sedの-n '/43.226.164.120/p' assess_log | awkの ' '{印刷SUBSTR($ 4,2)}'
awkの/43.226.164.120/{printのSUBSTR($ 4,2)} 'assess_log
二、awkの決意ロジック式:
- 〜正規表現にマッチします
- !〜正規表現に一致しないでください
- ==等しいです
- !=等しくありません
- <未満
- >より大きい
awkの-F ':'。 '$ 1〜/ ^メートルの* {$ 1印刷}' / etc / passwdファイルの印刷開始メートルのユーザ名
awkの-F ':'! '$ 1〜/ ^メートルの* {$ 1印刷}' の/ etc / Mのユーザー名を始めて印刷しないpasswdの
三、awkの拡張フォーマット
コマンド拡張機能
{プリント "スタート" を} BEGINパターン{AWK命令} END {プリント "終了"}
ケース番号:タブは、行ごとにユーザ名/ etc / passwdファイルの行番号、行あたりの列の数、対応する行を表示します
awkの-F ':'「BEGIN { "ユーザラインコル"} {$ 1印刷、NR、NF} END {印刷 "-------------" FILENAME "------- ------ "}」/ etc / passwdファイル
ケース#:フォルダ占有サイズが現在のフォルダ内の統計情報ファイル/
-al LS | awkの{数+ = $ 5} END {印刷回数} {= 0を数える} BEGIN "
-al LS | awkのBEGIN {カウント= 0} {カウント+ = $ 5} END {プリント枚数/ 1024/1024 "M"} '
統計は、#の/ etc総数/ passwdのアカウントを表示します
AWK -F ':' 'BEGIN {++カウント} {カウント= 0} END {印刷枚数}' / etc / passwdファイル
awkの-F ':' $ 1〜/ ^ $ / {数++} END {印刷回数} '/ etc / passwdファイルの空白行を除外し{= 0カウント} BEGIN'!
統計は、#の/ etcユーザ名がUIDで100以上/ passwdファイルであることを示します
AWK -F ':' $ 3>の100 '/ etc / passwdファイル' {$ 1印刷}
AWK -F ':' {印刷I、[i]は、ユーザのための(; iはカウント<I ++はI = 0)} 'の/ etc / $ 3>の100 {ユーザ[カウント++] = $ 1} END {= 0をカウント} BEGIN' passwdの
#各IPが表示されたログaccess_logの数を数えます
access_logのAWK '{(ARRでキー)、印刷キー、ARR [キー]を} {ARR [$ 1] ++} END'
AWKとsedのコントラスト
1、AWKやテキストを扱うことができるのsed
2は、awkの複雑なロジックに集中します
通常のプロセスで3、sedの焦点
4、AWK及びSEDは、一緒に使用することができます
インタビューの質問
1、]、[ファイル名のAAAを変更するには、ファイル名でAAAを含むディレクトリ内のすべてのファイルを変更します
見つけます。-name "* AAA *" -execリネームのAAA AAA {} \。
2、AAAを含むすべてのファイルの改変ディレクトリは、ドキュメントの内容を変更するように変更されているの[AAA]
SED -i 'S / AAA / AAA / G' 'はgrep AAA -rl.`バッククォート
、文書の内容を変更しない-iを使用して、ファイルを見て自身のsed