grepおよびawkコマンドの省略形

grep コマンド

grep “A” 文字 a を含む各行を抽出する

例えば: netstat -ant | grep “東”

grep -v “#” ファイルはファイル内のコメントを除外します

例えば: grep -v “#” httpd.conf >> /etc/httpd.conf

グリップ-n “試合内容”ファイルは、出力情報の行を出力します

例えば: grep -n -v “#” nginx.conf nginx.conf のコメントを外します,行番号とともに他のコンテンツを出力する。

grep -c は、一致する行の数のみを出力します

例えば: grep -c “2004” myfile は、2004 年に myfile に表示される行数を示します。,数値を 1 つだけ出力する。

grep “2004:22:5[0-9]” myfile は myfile に 2004 を表示します:22:502004年まで:22:59コンテンツ。

grep “^[^210]” myfile は、2、1、または 0 で始まる行を除外します。

grep -i “コンテンツ” 資料, 一致するファイルの内容,大文字と小文字を区別しません。

\ :マスキングメタキャラクタの特別な意味,たとえば、*.pas は、タイプが *.pas の一致するファイルを意味します。

[] :マッチ[]内の文字,1 文字でも複数文字でもかまいません。- を使用して範囲を示します。使用する場合[1-5]交換[12345]

. :任意の 1 文字に一致

* :単一または複数の文字に一致,といった:10133*1 マッチ 101331 ,101333921 , 10133AS1

^ :入力文字列の開始行に一致

$ :入力文字列の最終行に一致

^$ : 空白行に一致

^.$ :1 文字のみの一致行

例えば:grep ^events file ファイル内のイベントで始まる行を出力します。。

例えば:grep abc$ file は、ファイル file の abc で終わる行を出力します。

例えば:grep ^$ file ファイル内の空白行を出力する。

例えば:grep -n ^$ file ファイル内の空白行を出力する,および空白行がある行番号。

awk コマンド

awkにはループが付属しています,最初の行を最初に読む,セグメント,操作する;二行目を読む,セグメント,操作する;

最後の行が読み込まれるまで,セグメント,操作する。

awk ‘{注文}’ ファイル

複数のコマンドがある場合,各コマンド間;別れた。

awk ‘{コマンド 1;コマンド 2;コマンド 3}’ ファイル

特定の行に一致させる必要がある場合,パターン マッチは中かっこの左側に記述できます。

awk '/モード/{コマンド 1;コマンド 2;コマンド 3}’ ファイル

といった:猫 /etc/passwd | あなた-F: '/根/{印刷 $1}’ root を含む行に一致します,その行の列1を出力します。

猫 /etc/passwd | あなた-F: '/根/{印刷 $1,$2}’ root を含む行に一致します,その行の列1と2を出力します。

猫 /etc/passwd | あなた-F: ‘/^root/{印刷 $1}' 先頭に root があるものに一致します。

猫 /etc/passwd | あなた-F: ‘$2 ~ /root/{印刷 $1}’ root を含む 2 番目のフィールドに一致します。

猫 /etc/passwd | awk 'BEGIN{FS=”:”}$2 ~ /ルート/{印刷 $1}’ 最初の行を読む前に,変数 FS を定義する,区切り文字はコロン。

猫 /etc/passwd | awk 'BEGIN{FS=”:”}$2 ~ /ルート/{印刷 $1,$2}’ 複数のパーツを出力したい場合,コンマで区切ることができます。

猫 /etc/passwd | awk 'BEGIN{FS=”:”}$2 ~ /ルート/{印刷 $1 $2}’ カンマを書かないと,出力は連結されます。

awk のデフォルトの出力区切り文字はスペースです,出力の区切り文字を変更するには?変数 OFS を使用する。

猫 /etc/passwd | awk 'BEGIN{FS=”:”; OFS=”-“}$2 ~ /ルート/{印刷 $1,$2}' 出力の区切り文字を作成します -。

BEGIN には END があります, ENDは最後を掃くという意味。すべての行を読んだ後,最後に END 操作を実行します。

awk 'BEGIN{注文}/モデル/{コマンド 1;コマンド 2;コマンド 3}終わり{注文}’ ファイル

ifconfig eth0 | grep “inet アドレス” | awk 'BEGIN{xxxx を印刷}{印刷 $2}終わり{yyyy を印刷}’

出力は: inet アドレス:IPアドレス

xxxx と yyyy を出力しません,印刷を使用する場合,print の後に変数名が続く場合,使用できない場合があります””;

変数名が印刷の後にない場合,使用する必要があります””ブラケット。

ifconfig eth0 | grep “inet アドレス” | awk 'BEGIN{印刷 “xxxx”}{印刷 $2}終わり{印刷 “yyyy”}’

出力は:

xxxx

inet アドレス:IPアドレス

yyyy

先ほど、変数 FS と OFS について話しました。,現在NFとNRで

NF:行あたりのフィールド数

誰 | awk ‘{NRを印刷}’ 各行にいくつのフィールドがあるかを示します。

あなた-F: ‘{プリントNF}’ /etc/passwd 用:区切り文字として,passwd の各行に含まれるフィールドの数を表示する。

あなた-F: ‘/^root/{プリントNF}’ /etc/passwd の root で始まる行にはいくつのフィールドがありますか?。

NR:awk によって処理されたコンテンツのこの行は、元のテキストの最初の行です,つまり、行番号を表示します。

grep -n ^root /etc/passwd in passwd ファイル,root で始まる行は、元のテキストの最初の行です。。

あなた-F: ‘/^root/{NRを印刷}’ /passwd ファイルの etc/passwd,root で始まる行は、元のテキストの最初の行です。。

awk に付属する変数に加えて,awk は変数をカスタマイズすることもできます。

root が何回出現するか数える

あなた-F: '始める{aa=0}/根/{ああ++}終わり{プリント aa}’ passwd

このコマンドの意味,passwd ファイルを読み取る前に,最初に変数 aa を定義します,初期値は0,

ルートが含まれている場合,次に、変数 aa が 1 インクリメントされます。,passwd のすべての行が読み取られたとき,次に、END でコマンドを実行します。,aaの値を入力してください。

注意:変数を参照する場合、$ は追加されません,これは、シェルや他の言語と同じではありません 。

awk 'BEGIN {操作 1} {操作 2} 終わり {操作 3}’ ファイルは、操作 2 が実行される前に操作 1 を実行します,次に操作 2,操作 2 が完了したら、操作 3 を実行します。.

通常、BEGIN には、ファイルの正式な操作の前に初期値が割り当てられます。 ,END は通常、ファイル操作の後です,仕上げ作業の出力結果。

awk はデータを 1 行ずつ読み取ります(記録)読んだ,レコードはいくつかのフィールド (列) に分割されます,最初のフィールドを変数 $1 に入れます,

2 番目の変数は変数 $2 に入れられます,等々,$0レコード全体を表します;

NR : 現在のレコード番号(どの行)

NF: 現在のフィールド(範囲)番号(何列)

-F “#” つまり、各ドメイン(各列)間の区切り文字 (スペース) は # に置き換えられます,より直感的です。

例えば:あなた-F “#” ‘{印刷 $0}’ nginx.conf は、nginx.conf のすべてのレコード (すべての行) を出力します。

すべてのフィールド (各行のすべての列) を削除し、各列の間の区切り文字 (スペース) を # に置き換えます。

awk ‘{印刷 $0}’ myfile は myfile 内のすべてのレコード (行) を出力します。

$0全体の記録です ,$1レコードの最初のフィールドです,$2レコードの 2 番目のフィールドです,$3レコードの 3 番目のフィールドです,等々。

ただし、シェルの $ と混同しないでください。

例えば:あなた-F “#” ‘{プリントNF,NR,$0}' nginx.conf は、nginx.conf のすべてのレコード (すべての行) を出力します

すべてのフィールド (各行のすべての列) を削除し、各列の間の区切り文字 (スペース) を # に置き換えます。同時に、各レコードが配置されている行番号を数えます,

各レコードに含まれるフィールド (列) の数。

では、印刷の順番は:

このレコードにはいくつのフィールドがありますか(NF) この記録は何行目か (NR) 記録内容($0)(フィールド1#フィールド2)

このレコードにはいくつのフィールドがありますか(NF) この記録は何行目か (NR) 記録内容($0)(フィールド1#フィールド2)

このレコードにはいくつのフィールドがありますか(NF) この記録は何行目か (NR) 記録内容($0)(フィールド1#フィールド2)

awk の特殊なメタ文字: + ,? + は任意の文字に一致することを意味します,?任意の文字に一致することを意味します。

マッチ演算子: 〜 , !~ 。 ここで ~ は一致を意味します, ! ~は不一致を意味します。 一致または不一致のコンテンツが続く,内容は//で囲みます。

例えば:

猫スコア.txt | awk '$0~/218.79.131.96/’ まず、score.txt の内容を出力します,次に、IP 218.79.131.96 のレコード全体を見つけます。。

猫スコア.txt | awk ‘$0!~/218.79.131.96/’ まず、score.txt の内容を出力します,次に、IP 218.79.131.96 でレコード全体をフィルタリングします。

awk ‘{もし($1==”218.79.131.96″) printf $0}’ score.txt はファイル sorce.txt にあります

レコードの最初のフィールドが 218.79.131.96 に一致する場合,次に、レコードを含むフィールド全体を出力します。

すべての awk 操作は引用符で囲まれています。

awk の一般的な形式

awk ‘{123}{345}{345}{456}’ 中括弧の間にスペースがないファイル

 

nginxのアクセスログをリアルタイムで出力,アクセスしたIPアドレス, - を区切り文字として使用

tail -f /var/log/nginx/access.log | あなた-F- ‘{印刷 $1}’

[root@app01 ~]# mpstat -P ALL | grep -v Linux | 並べ替え-k4nr | 頭 -5

次のようなテキストがあります a.txt,おかしい ,行 3、列 3 の値を取る
01:34:14 午後 2 16.13 0.00 0.81 0.01 0.00 0.24 0.00 0.00 82.82
01:34:14 午後 1 11.65 0.00 0.63 0.00 0.00 0.15 0.00 0.00 87.58
01:34:14 午後 3 11.59 0.00 0.64 0.00 0.00 0.11 0.00 0.00 87.66
01:34:14 午後 18 7.82 0.00 0.36 0.00 0.00 0.00 0.00 0.00 91.82
01:34:14 午後 16 7.21 0.00 0.41 0.00 0.00 0.02 0.00 0.00 92.36

[root@app01 ~]# 猫a.txt |あなた 'NR==3{印刷 $3}’
3

 

 

返信を残します