grepのSEDのawk - Linuxテキスト処理三銃士は、下の持っています
グレップ:テキスト行のフィルタリングツール
SED:テキスト行エディタ(ストリームエディタ)
AWK:レポートジェネレータ(テキスト出力のフォーマット行います)
まず、正規表現
1、基本的な正規表現
*直前の文字がゼロまたは任意の回数マッチ(*は文字ゼロ又は試合前に任意の回数を表し、一致する、いかなる意味を書いていないすべての.aa *一致の少なくとも1つの行を含んで示します)
試合改行以外の任意の文字
^ $行の先頭や行の終わり
カッコ内の[]任意の1つの文字
\ {N \}は文字をエスケープ\文字が正確にn回表示されていることを示しています
\ {N、\}は、前の文字が表示されることを示すn倍以上であります
\ {N、Mの\} n回の文字は、少なくとも前のm番目の最も頻繁前記表示します
2、拡張正規
あなたは、エスケープ文字は必要ありません。
+文字試合前回または何回
?直前の文字を0または1回一致します
|選択する2つの以上の分岐をマッチング
()全体にマッチ
第二に、文字の傍受やコマンドを交換してください
1、カット
切断されたデフォルトの区切りは「タブ」キーでタブのコマンドであり、
-f列番号
-d区切り文字
-c文字範囲
2、AWK
一般的なパラメータ
区切り文字を指定-F
手動可変パラメータを指定-v
1)printfのフォーマット出力
printfの「出力出力フォーマットタイプ」出力内容
出力タイプ:%のNS:出力文字列。nが出力いくつかの文字を参照するための番号であります
%のNi:整数出力。Nは、いくつかのデジタル出力を参照する数であります
%M.nf:浮動小数点出力。mおよびnは数値、整数桁と世代出力の小数点以下の桁です。共通の出力の%8.2f 8ビットを表します、
図2は、分数であり、図6は、整数です。
+右を合わせます
- 左
例:
IDシステムは、1以上であり、500人の未満ユーザー参照。
猫/ etc / passwdファイル| awkのBEGIN {FS =を ":"} $ 3>を= 1 && $ 3 '= 500 {のprintf "%-10s%-10D \ n" は、$ 1、$ 3} "
2)基本的な使い方をawkは
awkの{アクション1つの条件1つの条件2} {2} ...操作 'ファイル名
例:DF -h | grepのは/ dev / sda3と|のawk '{$ 5印刷}' rootパーティション抽出を共有します
3)awkの条件
awkはプログラムの先頭を開始すると、それがどのようなデータを読み込む前に実行されていません。BEGINアクションは、プログラムの先頭で1回だけ実行された後、
すべてのデータの処理にENDのawkプログラムを終了し、実行が終了しようとしています。ENDアクションは、プログラムの終了時に1回だけ実行された後、
>> = <<= ==!=
〜Bは、文字列は、AがBの表現にマッチする部分文字列が含まれているかどうかを決定します
!A〜Bは、部分文字列が含まれていない文字列がBの発現と一致するか否かを判定する
/正規/
4)awkは組み込み変数
$ 0がデータの行全体が現在読まれているAWK表します。私たちは、awkのラインによるデータラインに読み込まれている知っている、$ 0がデータの行全体が現在の行に読み込まれる表し
$ Nは、現在の行に読み込まn番目のフィールドを表します。
フィールド所有(カラム)NF全電流ライン。
NR AWK現在処理行、合計データの最初の数行。
FSのユーザー定義の区切り文字。AWKのデフォルトの区切り文字は任意のスペースであるあなたが(のような「:」)他の区切り文字を使用したい場合は、あなたが変数FSを定義する必要があります
セパレータ(デフォルトはスペース)OFS出力フィールド。
例:統計historyコマンドの数が最も多いです
歴史| awkの-F '[] +' '{$ 3印刷}' |並べ替え| uniqの-c |ソート-nr |ヘッド
3、しかし、
sedのは主に、データを選択し、置換、削除、コマンドを追加するために使用されます
sedの[オプション] '[アクション]' ファイル名
オプション:
-n SED命令する一般画面へのすべてのデータ出力、添加する場合は、この選択、意志画面にsedコマンド処理ラインを介してのみ出力。
-rは、中のsedで拡張正規表現をサポートしています
直接スクリーンによって出力されたデータを読み出す代わりに、ファイルを変更するのsed -i修正結果
アクション:
\:追加、現在の行の後一つ以上の行を追加します。「\」最後の行を除いて、各行の終わりを使用する必要があり、複数の行を追加し、データが終わりではありません表します。
C:\行置換と列Cの後ろに行と元データは、複数の行を置き換える、最後を除いて、各ラインの端部は、必要な「\」は、データが終わりではない表します。
私は\:現在の期間中に1つ以上の行を挿入する前に、挿入します。データは終わりではありません表して「\」最後の行を除いて、各行の終わりを使用する必要があり、複数の行を挿入します。
D:指定された行を削除するには削除します。
P:印刷、エクスポートする指定した行
S:文字列置換、別の文字列と文字列を置き換えます。「線幅S /古い文字列/新しい列/ G」(及びVIMで類似の置換パターン)のフォーマット
第三に、文字処理コマンド
1、ソート
並べ替え[オプション]ファイル名
-f:ケースを無視
-b:各列の前部の空白部分を無視
-n:数値をソートする、文字列のデフォルトの順序
-r:シーケンシングを逆転
-u:重複行を削除します。これは、uniqのコマンドです
-t:デフォルトの区切り文字はタブで、区切り文字を指定します。
-kn [M]:範囲を指定したフィールドに従ってソート。最初のフィールドn、フィールドのm個の端から(デフォルトでは行の終わりまで)
2、uniqの
uniqの[オプション]ファイル名
-i:ケースを無視
3、WC
-l:のみ行の数を数えます
-w:唯一の単語の数を数えます
-m:文字だけの数を数えます
-Lは:文字の単語数をカウントします
第四に、条件付き
決意条件に応じて1、
テスト
-dディレクトリが存在するかどうかを判断します
ファイルが存在するかどうかを判断-E
通常のファイルかどうかを判断-f
ファイルが空であるかどうかを判断するために-S
2、ファイルのアクセス権の裁判官に従い、
-r
-w
-バツ
-u SUID権限があるかどうかを判断します
-g権限があるかどうかを判断SGID
-k権限がありSBITかどうかを判断します
3、二つの文書間で決定されます
2ファイル1つの-ntファイルは、ファイルの修正時刻がファイル1 2よりも新しいかどうかを判断する(新しい真の場合)
2ファイル1つの-otファイルを決定し、古いファイルよりもファイルの更新時刻かどうかを1 2(旧Trueの場合)
1 2 1 -ef iノードと同じ文書ファイルは、ファイルとファイル2は二つのファイルと同じファイルかのように理解することができるかどうかを決定します。この判断は、ハードリンクを決定するために使用されて良い方法です
図4に示すように、整数値が決定されます
-eq等しいです
より大きい-gt
以上-ge
未満を-lt
-le少ないです
5、文字列が決定されます
-zは、文字列が空(空の戻り真)であるか否かを判断します
-n文字列が空でない(非空の戻り真)であるか否かを判断します
== 1は、文字列かどうかを決定し、列2は、等しい(真等しい戻り値)であります
!= 1(真等しくない返す)文字列と文字列が2に等しくないか否かを判断します
図6に示すように、複数の条件の決意
2 -aの決意ロジックを解析、及び2に該当する判断を決定することは、最終的な結果は真となり
論理1又は2 -O決意を解析し、2を決定する集合を決定し、最終的な結果は真となり
!式の元の決意を否定するように、論理否定を解析
第五に、プロセス制御
1、もし単一の四肢
[]であれば、次に
身体の実装
されます
2、もし分岐
[]であれば、次に
条件の実装が満たされています
他
実行条件が成立していません
されます
3、マルチブランチ場合
[]であれば、次に
条件の実装が満たされています
elif [];その後
条件の実装が満たされています
他
すべての条件を実行するように設定されていません
されます
4、マルチ分岐ケース条件文
判定条件の関係の場合だけでなく、より多くの場合に決定することができます
ケース内の変数
値1)
身体の実装
;;
値2)
身体の実装
;;
*)
変数が値以下である場合は、この実装
;;
ESAC
循環のための5、
私条件でのため。行う
ループ
完了
(変数の変更);循環制御条件(初期値)について
行う
ループ
完了
6、しばらく循環
一方、[条件]; DO
完了