android開発スクリプトのawk
引用する
Android開発スクリプトの特定のパケット名をフィルタするlog
この例では、他のことはよくわかりますが、awkです.接触したことがなければ、何が起こっているのか少し分かりません.以下、awkについて簡単に説明します.
概要
awkは強力なテキスト分析ツールであり、grepの検索、sedの編集に比べて、awkはデータを分析し、レポートを生成する際に特に強力に見えます.簡単に言えばawkは、ファイルを行ごとに読み込み、スペースをデフォルトの区切り文字として各行をスライスし、切った部分を様々な分析処理を行います.
使用方法
awk言語の最も基本的な機能は、ファイルまたは文字列で指定されたルールに基づいて情報を参照および抽出し、awkが情報を抽出した後、他のテキスト操作を行うことです.完全なawkスクリプトは、通常、テキストファイルの情報をフォーマットするために使用されます.
通常、awkはファイルの動作処理単位です.awkは、ファイルの1行を受信するたびに、対応するコマンドを実行してテキストを処理します.
呼び出しawk
awkを呼び出すには3つの方法があります
コマンドライン方式
shellスクリプト方式
すべてのawkコマンドをファイルに挿入し、awkプログラムを実行できます.その後、awkコマンド解釈器はスクリプトの最初の行として、スクリプト名を入力して呼び出されます.shellスクリプトの最初の行に相当します:#!/bin/shは:#!/bin/awk
すべてのawkコマンドを個別のファイルに挿入し、次のように呼び出します.
いくつかの簡単な使用例
1.プロセス情報の表示
デフォルトではawk印刷ファイルの各行
Awkには多くの組み込み変数が含まれており、各行のレコードについては、Awkはデフォルトでスペースで分割され、分割された値が対応するn変数に格納されます.1行に4つの単語がある場合、1,2,3,4にそれぞれ格納され、(0)は行全体を表す.$NFは最後のフィールドを表します
Awkには2つの重要なキーワードBEGINとENDが含まれています
$1はUSERを表し、systemに等しい場合は行全体を印刷します.
参考資料
1.http://blog.csdn.net/andyxm/article/details/5964071awk print学習
2.http://cache.baiducontent.com/c?m=9d78d513d99004f64caad420024c91205b43811021ca95503ac3933fc2380b1f1a33a2ac275541598cd8293259e81806bdac636f644371edc08cdf57ddb99129328a2429731d9b4118d413a9ce4432c157ca1cb6f1&p=cb72c54ad5c340f34ebe9b7c554485&newp=8b2a9702909819f100bd9b7d0d17c6231610db2151d4d5166b82c825d7331b001c3bbfb423221b02d7c4766501a44d5ee0fa3075360021a3dda5c91d9fb4c57479cf616f2842de&user=baidu&fm=sc&query=awk&qid=822412cc0003b0ee&p1=1linux awkコマンドの詳細
Android開発スクリプトの特定のパケット名をフィルタするlog
この例では、他のことはよくわかりますが、awkです.接触したことがなければ、何が起こっているのか少し分かりません.以下、awkについて簡単に説明します.
概要
awkは強力なテキスト分析ツールであり、grepの検索、sedの編集に比べて、awkはデータを分析し、レポートを生成する際に特に強力に見えます.簡単に言えばawkは、ファイルを行ごとに読み込み、スペースをデフォルトの区切り文字として各行をスライスし、切った部分を様々な分析処理を行います.
使用方法
awk '{pattern + action}' {filenames}
操作は複雑かもしれませんが、構文は常にこのようになります.patternはAWKがデータで検索したコンテンツを表し、actionは一致するコンテンツを見つけたときに実行される一連のコマンドです.カッコ({})は、プログラム内で常に現れる必要はありませんが、特定のモードに基づいて一連の命令をグループ化するために使用されます.patternは表す正規表現で、スラッシュで囲まれています.awk言語の最も基本的な機能は、ファイルまたは文字列で指定されたルールに基づいて情報を参照および抽出し、awkが情報を抽出した後、他のテキスト操作を行うことです.完全なawkスクリプトは、通常、テキストファイルの情報をフォーマットするために使用されます.
通常、awkはファイルの動作処理単位です.awkは、ファイルの1行を受信するたびに、対応するコマンドを実行してテキストを処理します.
呼び出しawk
awkを呼び出すには3つの方法があります
コマンドライン方式
awk [-F field-separator] 'commands' input-file(s)
ここで、commandsは真のawkコマンドであり、[-Fドメイン区切り記号]はオプションである.input-file(s)は処理対象のファイルです.awkでは、ファイルの各行において、ドメイン区切り記号で区切られた各項目を1つのドメインと呼ぶ.通常、-Fドメイン区切り記号を指定しない場合、デフォルトのドメイン区切り記号はスペースです.shellスクリプト方式
すべてのawkコマンドをファイルに挿入し、awkプログラムを実行できます.その後、awkコマンド解釈器はスクリプトの最初の行として、スクリプト名を入力して呼び出されます.shellスクリプトの最初の行に相当します:#!/bin/shは:#!/bin/awk
すべてのawkコマンドを個別のファイルに挿入し、次のように呼び出します.
awk -f awk-script-file input-file(s)
ここで、-fオプションはawk-script-fileのawkスクリプトをロードし、input-file(s)は上記と同じです.いくつかの簡単な使用例
1.プロセス情報の表示
adb shell ps > ps.txt
ps.txtの表示cat ps.txt
2.Awkのデフォルト動作デフォルトではawk印刷ファイルの各行
awk '{print;}' ps.txt
3.Awk一致する行を印刷するandroid@tesdt-Precision-T1700:~/Desktop$ awk '/com.android.phone/' ps.txt
radio 2369 683 1510652 83040 SyS_epoll_ 0000000000 S com.android.phone
4.Awk指定されたドメインのみ印刷Awkには多くの組み込み変数が含まれており、各行のレコードについては、Awkはデフォルトでスペースで分割され、分割された値が対応するn変数に格納されます.1行に4つの単語がある場合、1,2,3,4にそれぞれ格納され、(0)は行全体を表す.$NFは最後のフィールドを表します
awk '{print $1, $2} ' ps.txt
root 10570
root 10659
root 10737
root 10782
root 10783
root 10815
root 10850
root 10930
shell 10945
awk '{print $1, $NF} ' ps.txt
root kworker/u16:0
root kworker/4:0
root kworker/6:1
shell ps
5.Awkの開始と最後の動作Awkには2つの重要なキーワードBEGINとENDが含まれています
BEGIN { Actions} {ACTION} # Action for everyline in a file END { Actions }
BEGINセクションのActionsは、ファイル内のローを読み込む前に実行されます.一方、ENDセクションのActionsは、ファイル内のすべてのローを読み取り、処理した後に実行されます.awk 'BEGIN {print "-------start--";}
{print $1,"/t", $2,"/t", $3,"/t",$NF;}
END{print "-----------end------";
} ' ps.txt
-------start--
USER /t PID /t PPID /t NAME
root /t 10783 /t 2 /t kworker/5:0
root /t 10815 /t 2 /t kworker/u16:0
root /t 10850 /t 2 /t kworker/4:0
root /t 10930 /t 2 /t kworker/6:1
shell /t 10945 /t 655 /t ps
-----------end------
6.Awk社員PIDが1000より大きい進捗情報を探し出すawk '$2 > 10800' ps.txt
USER PID PPID VSIZE RSS WCHAN PC NAME
root 10815 2 0 0 worker_thr 0000000000 S kworker/u16:0
root 10850 2 0 0 worker_thr 0000000000 S kworker/4:0
root 10930 2 0 0 worker_thr 0000000000 S kworker/6:1
shell 10945 655 3788 1068 0 7f997f26ac R ps
7.Awk印刷USERがシステムのプロセス$1はUSERを表し、systemに等しい場合は行全体を印刷します.
awk '$1 ~/system/' ps.txt
system 4542 683 1434148 32520 SyS_epoll_ 0000000000 S com.qualcomm.qti.notificationservice
system 4917 683 1436844 34788 SyS_epoll_ 0000000000 S org.simalliance.openmobileapi.service:remote
system 4928 683 1435396 33368 SyS_epoll_ 0000000000 S com.qualcomm.display
system 10546 683 1464360 36076 SyS_epoll_ 0000000000 S com.android.settings
system 10558 683 1457292 34904 SyS_epoll_ 0000000000 S com.qualcomm.qti.ext
~オペレータは正規表現の値と比較し、一致する場合は行全体を印刷します.参考資料
1.http://blog.csdn.net/andyxm/article/details/5964071awk print学習
2.http://cache.baiducontent.com/c?m=9d78d513d99004f64caad420024c91205b43811021ca95503ac3933fc2380b1f1a33a2ac275541598cd8293259e81806bdac636f644371edc08cdf57ddb99129328a2429731d9b4118d413a9ce4432c157ca1cb6f1&p=cb72c54ad5c340f34ebe9b7c554485&newp=8b2a9702909819f100bd9b7d0d17c6231610db2151d4d5166b82c825d7331b001c3bbfb423221b02d7c4766501a44d5ee0fa3075360021a3dda5c91d9fb4c57479cf616f2842de&user=baidu&fm=sc&query=awk&qid=822412cc0003b0ee&p1=1linux awkコマンドの詳細