一個awk的語句,還請大蝦幫忙看看,解釋下是什么意思
就是對filename中每行的第18個字段(以逗號為分隔符),打印不重復的值及各自出現的次數,打印的次數與值之間以tab分隔。
具體解釋如下:
將 cat filename 的輸出送給 awk 處理。
awk是按行處理文本的。
-F ',' :對每條記錄(每行文本),以逗號“,”為字段分隔符將該記錄分割為多個字段。
++S[$18] :對第18個字段,即 $18,將其值作為數組下標,以數組形式保存并計數(相同的值,出現一次則計數加一次;不同的值則作為新的數組下標來重新計數)。
END {for(a in S) print S[a],"\t",a} :在awk處理完所有數據后,打印數組的值(次數)及數組下標($18的值)并以 tab 分隔。
awk if語句
C語言中用system() 執行shell命令:system("shell命令")主要需要解釋的是awk,awk主體中的語法其實與C類似,只不過其中用到了正則匹配。
格式:awk '' 文件backbone.c就是awk要處理的文件。$0~/^\\/\\*\\*/ :格式:$0 ~ /正則表達式/作用:判斷$0是否匹配正則表達式 ^\\/\\*\\*含義:awk是逐行讀入并處理的,$0代表整行數據; 正則表達式中 ^ 表示一行的開頭,斜杠前要加轉義符以免被認為是正則表達式的定界符,*表示匹配0個或多個前面的字符。
總體來講,就是只處理backbone.c文件中匹配 /^\\/\\*\\*/ 的行與匹配 /\\*\\*\\// 的行中間的內容,并通過print打印到屏幕。
linuxshell腳本wak語句中awk'BEGIN{FS="'"'"'";RS="\n"}{for(i=2;
FS表示操作的時候以什么為分割符RS表示記錄分割符(Record Separator)即RS表示的是awk操作最小單位的邊界,而FS是這個最小單位中分割的符號例如:101,John Doe:102,Jason Smith:103,Raj Reddy如果不指定RS,指定FS為“,”,那么awk將101作為第一列,剩下的全部為第二列,如果指定RS=":",那么awk就會將內容作為三“行”,第一列包括101,102和103,第二列包括John Doe,Jason Smith和Raj Reddy。