【鳥兄のlinuxプライベートルーム料理-学習ノート】ファイルのフォーマットと関連処理
ファイルのフォーマットと関連処理
印刷の書式設定:printf
[root@www ~]# printf ' '
オプションとパラメータ:フォーマットに関するいくつかの特殊なスタイル:a警告音声出力b後退キー(backspace)fクリアスクリーン(form feed)新しい行rすなわちEnterキーt水平の[tab]キーv垂直な[tab]キーxNN NNは2桁の数字を出力し、数字をバイトに変換することができる.Cプログラム言語については、一般的な変数フォーマット%nsのnは数字であり、sはstring、すなわち何バイトを表すか.%Niそのnは数字で、iはintegerを代表して、つまりどれだけの整数の数字です;N.nfのnとNはすべて数字で、fはfloating(浮動小数点)を代表して、もし小さい数字の数があれば、私は全部で10桁の数を要すると仮定して、しかし小数点は2桁あって、つまり%10.2 fです.
awk:使いやすいデータ処理ツール
sedが1行全体に作用する処理に比べてawkは1行に数個の「欄位」に分けて処理する傾向があり、デフォルトの「欄位の区切り記号は「空白キー」または「[tab]キー」である.従ってawkは小型のデータデータ処理にかなり適している.awkは通常、次のように動作します.
[root@www ~]# awk ' 1{ 1} 2{ 2} ...' filename
例:
[root@www ~]# last -n 5 <==
入手:root pts/1 192.168.1.1100 Tue Feb 10 11:21 still logged in root pts/1 192.168.1100 Tue Feb 10 00:46-02:28(01:41)root pts/1 192.168.1100 Mon Feb 9 11:41-18:30(06:48)dmtsai pts/1 192.168.1100 Mon Feb 9 11:41-11:41(00:00)root tty 1 Fri Sep 5 14:09-14:10(00:01)
使用
last -n 5 | awk '{print $1 "\t" $3}'
得られた:root 192.168.1.1100 root 192.168.1.1100 root 192.168.1.1100 dmtsai 192.168.1.1100 root Fri
さっきの5行のうちawk全体の処理の流れは:
, $0, $1, $2.... ;
" " , " ";
;
『 』 , 1~3 , 。
$0は『1列のデータ』を表します.
awkは『行為1回で処理する単位』であり、『欄位で最小の処理単位』である.
awkの後続のすべての動作は単一引用符『’』で囲まれています.単一引用符と二重引用符はペアでなければならないので、awkのフォーマットの内容をprintで印刷したい場合は、非変数の文字部分を覚えておいてください.前の節printfで述べたフォーマットに含まれている場合は、二重引用符で定義する必要があります.単一引用符はawkのコマンド固定用法であるからです.
awk内蔵変数
変数名
代表的意義.
NF
1行当たり($0)のカラム数の合計
NR
現在awkで処理されているのは『数行目』のデータです
FS
現在の区切りバイト、デフォルトは空白キー
注意事項:
awkのコマンド間隔:すべてのawkの動作、すなわち{}内の動作であり、複数のコマンドアシストが必要な場合はセミコロン';間隔、または各コマンドを[Enter]ボタンで直接離します.
論理演算では、『等于』の場合、必ず2つの等号『==』!
出力をフォーマットする場合、printfのフォーマット構成には、必ず追加してから支店を行うことができます!
bash shellの変数とは異なりawkでは$記号を付けずに変数を直接使用できます.
ファイル照合ツール
diff:
diffは2つのファイルの違いを比較するために使用され、動作単位で比較されます!一般的にASCII純文字ファイルの対比に用いられる.動作比対の単位であるため、diffは通常、同じファイル(またはソフトウェア)の新旧バージョンの違いで使用されます.
cmp:
cmpは主に2つのファイルを比較しており、彼は主に『ビットグループ』単位を利用して比較しているので、もちろんbinary fileを比較することもできます.
patch:
2つのファイルの違いをdiffで比較し,さらにこの機能を利用してパッチファイル(patch file)を作成することができる.