AWK是一種處理文本文件的語言,是一個強大的文本分析工具。之所以叫 AWK 是因為其取了三位創始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。三位創建者已將它正式定義為“樣式掃描和處理語言”。它允許創建簡短的程序,這些程序讀取輸入文件、為數據排序、處理數據、對輸入執行計算以及生成報表,還有無數其他的功能。
awk {pattern + action} {filenames}
盡管操作可能會很復雜,但語法總是這樣,其中 pattern 表示 AWK 在數據中查找的內容,而 action 是在找到匹配內容時所執行的一系列命令。花括號({})不需要在程序中始終出現,但它們用于根據特定的模式對一系列指令進行分組。pattern就是要表示的正則表達式,用斜杠括起來。
awk語言的最基本功能是在文件或者字符串中基于指定規則瀏覽和抽取信息,awk抽取信息后,才能進行其他文本操作。完整的awk腳本通常用來格式化文本文件中的信息。
通常,awk是以文件的一行為處理單位的。awk每接收文件的一行,然后執行相應的命令,來處理文本。
FS:輸入字符分隔符,默認為空白字符
OFS:輸出字段分隔符,默認為空白 字符
RS:輸入記錄分隔符(輸入換行符),指定輸入時的額換行符
NF:number of Field,當前行的字段的個數,字段數量
NR:行號,當前處理的文本行的行號
FNR:各文件分別計數的行號
FILENAME:當前文件名
ARGC:命令行參數的個數
ARGV:數組,保存的是命令行所給定的各參數
Awk-F : {printf("filename:%10s,linenumber:%s,columns:%s,linecontent:%s ",FILENAME,NR,NF,$0)} /etc/passwd
awk中同時提供了print和printf兩種打印輸出的函數。
其中print函數的參數可以是變量、數值或者字符串。字符串必須用雙引號引用,參數用逗號分隔。如果沒有逗號,參數就串聯在一起而無法區分。這里,逗號的作用與輸出文件的分隔符的作用是一樣的,只是后者是空格而已。
printf函數,其用法和c語言中printf基本相似,可以格式化字符串,輸出復雜時,printf更加好用,代碼更易懂。
1. 進行簡單的四則運算
awk -v a=100 -v b=3 BEGIN{printf("%4.2f ""%d ", a/b, 10/2)}
2. 查看當前的內存使用率,并進行判斷,超過60輸出提示
vmstat 1 10|sed -n "7,12"p|awk -v ALL=`cat /proc/meminfo |grep MemTotal |awk {printf ("%d ",$2)}` {sum+=$4}END{print ((ALL-sum/6)/ALL)*100}|awk {if(($(NF))>60) print "memory usage beyond 60,is "$(NF);else print $(NF)}
3.文件系統使用率,超過65輸出
df -h |awk -F [ %]+ {if(NR!=1 && $5 >= 65) print $5 " "$6}
4.剔除最后兩列輸出前面全部內容
echo "/home/oracle/ogg/dirprm/mgr.prm"|awk -F/ {OFS="/"}{NF=NF-2}{print}
5.利用split行轉列
echo "12:34:56" | awk {split($0,a,":" ); for (i=1; i<=3; i++) print a[i]}
更多精彩干貨分享
點擊下方名片關注
IT那活兒
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129913.html
摘要:以下都會使用到容器,所以執行以下指令查看容器或者容器名稱檢查環節變量查看日志備份恢復備份使用進入容器沒有剩余磁盤空間使用以下指令刪除容器和鏡像刪除所有容器刪除未使用的鏡像清理日 以下都會使用到容器 id,所以執行以下指令查看容器 id 或者容器名稱 [yexiaobaideMacBook-Pro: ~]$ sudo docker ps CONTAINER ID IMAG...
摘要:實際上,認為文本文件都是結構化的,它將每一個輸入行定義為一個記錄,行中的每個字符串定義為一個域段,域和域之間使用分割符分割。 看到一篇Docker 技巧:刪除 Docker 容器和鏡像其中提到刪除標簽為none的鏡像的方法,其中用到了awk,就去查了下,下面舉例說明: docker rmi $(docker images | awk $1 == && $2 == {print $3...
摘要:防止文件系統下和根目錄下誤操作。監控的表空間每月月底執行的腳本每月日執行的腳本跟蹤結果的腳本放在腳本最后報警檢查系統的進程可修改運行示例 [shell編程] AIX shell工具集AIX1.批量改名或拷貝文件比如將 start.sh文件改為stop.sh拷貝先查看ls -l start*.sh|awk {m=$9; gs...
摘要:自己的小網站跑在阿里云的上面偶爾也去分析分析自己網站服務器日志看看網站的訪問量。然后統計最終返回的數字就是當前所有端口的已建立連接的總數。 自己的小網站跑在阿里云的ECS上面,偶爾也去分析分析自己網站服務器日志,看看網站的訪問量。看看有沒有黑闊搞破壞!于是收集,整理一些服務器日志分析命令,大家可以試試! 1、查看有多少個IP訪問: awk {print $1} log_file|sor...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20