❶ awk命令詳解是什麼
awk命令是linux下的一個文件管理命令,具體語法格式為awk [參數] [文件],通常是用於文本和數據進行處理的編程語言,awk命令主要有兩個功能;awk命令可以在linux/unix下對文本和數據進行處理;awk命令支持用戶自定義函數和動態正則表達式。
相關介紹:
AWK是一種優良的文本處理工具。它不僅是Linux中也是任何環境中現有的功能最強大的數據處理引擎之一。這種編程及數據操作語言(其名稱得自於它的創始人AlfredAho、PeterWeinberger和BrianKernighan姓氏的首個字母)的最大功能取決於一個人所擁有的知識。
AWK提供了極其強大的功能:可以進行樣式裝入、流控制、數學運算符、進程式控制制語句甚至於內置的變數和函數。它具備了一個完整的語言所應具有的幾乎所有精美特性。
實際上AWK的確擁有自己的語言:AWK程序設計語言,三位創建者已將它正式定義為「樣式掃描和處理語言」。它允許您創建簡短的程序,這些程序讀取輸入文件、為數據排序、處理數據、對輸入執行計算以及生成報表,還有無數其他的功能。
最簡單地說,AWK是一種用於處理文本的編程鬧畝數語言工具。AWK在很多方面類似於shell編程語言,盡管AWK具有完全屬於其本身的語法。它的設耐雀計思想來源於SNOBOL4、sed、MarcRochkind設計的有效性語言、語言工具yacc和lex,當然還從C語言中獲取了一些優秀的思想。
在最初創造AWK時,其目的是用於文本處理,並且這種語言的基礎是,只要在輸入數據中有模式匹配,就執行一液首系列指令。
❷ awk命令詳解
除了使用sed命令答租運,Linux系統中還有一個功能更加強大型緩的文本數據處理工具,就是awk。它誕生於20世紀70年代末期,這也許是它影響了眾多Linux用戶的原因之一。和sed命令類似,awk命令也是逐行掃描文件(從第1行到最後一行),尋找含有目標文本的行,如果匹配成功,則會在該行上執行用戶想要的操作;反之,則不對行做任何處理。awk命令的基本格式[root@localhost]#awk[選項]'腳本命令'文件名。awk的強大之處在於腳本命令,它由2部分組成,分別為匹配規則和執行命令。
awk的主要特性之一是其處理文本文件中數據的能力
它會自動給一行清梁中的每個數據元素分配一個變數。
❸ linux awk命令怎麼用
awk命令是Alfred Aho, Peter Weinberger, Brian Kernighan三御橡位作者聯合開發的,用於Linux/Unix中處理數據和產生報告。awk命令功能十分強大,可根據需要抓取、截取指定的列或行。
首先在/mnt目錄下創建示例文本文件f1,其內容如下:
1 hello hello
2 data data
3 xyz abc
4 123 789
5 ftp
6 Apache
7 apache
然後,使用awk對f1文件內容進行處理,舉例如下。
①awk -F " " '{print $2,$3}' f1:截取顯示文檔的第二列和第三列,-F指定分隔符為空格,$表示顯示第幾列。其中print表示要做輸出信息的動作,$2和$3表示要輸出的列號,awk要求將print已經輸出列等內容放在「'{}'」之間。
②awk -F " " '($1>3){print $2,$3}' f1:選取第一列的值大於3的行,顯示其第二列和第三列,在「()」中指定篩選條件。
③awk 'NR==4 || NR==3' f1:顯示第三行和第四行,NR表示行號。
④awk '/data/ {print $2}' f1:抓取包含洞並指定字元的行,再對列進行截取。此例中,awk先按照「data」字元串對文件f1中的行篩選,找出包含「data」的行以後,再按照默認的空格作為分隔符納拆跡對行的內容做切割,僅列印出第二列的內容。
⑤awk '$2 ~ /data/ ' f1:抓取第二列包含指定字元的行。其中「~」表示是否匹配指定的「data」,如果第二列的內容包含「data」就列印出整行內容。
⑥awk '$2 !~ /data/ ' f1:抓取第二列不包含指定字元的行。其中「!~」表示是否不匹配指定的「data」,如果第二列的內容不包含「data」就列印出整行內容。
❹ linux awk命令詳解
awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在對數據分析並生成報告時,顯得尤為強大。
簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部飢物型分再進行各種分析處理。
awk有三個不同的版本:awk、nawk和gawk,未作特別說明,一般指gawk,gawk是awk的GNU版本。
之所以叫awk是因為其取了三位創始人Alfred Aho,Peter Weinberger,和Brian Kernighan的Family
Name的首字元。
awk格式:
格式: sed -n '3p' sed.txt
找誰幹啥(條件螞啟動作)
awk格式
#取出/etc/passwd 第1行的第1列和第3列
awk -F: 'NR==1{print $1,$3}' /etc/passwd
awk 選項 '條件{動作}' /etc/passwd
條件: 哪一行,過濾什麼內容
動作: print輸出與顯示 ,計算....
awk取行:與sed類似
案例01:取出sed.txt的第2行
[root@oldboy81-golden-lnb /oldboy]# cat sed.txt
101,oldgirl,CEO
102,zhangya,CTO
103,li007,COO
104,yy,CFO
105,feixue,CIO
110,li,COCO
[root@oldboy81-golden-lnb /oldboy]# awk 'NR==2' sed.txt
102,zhangya,CTO
#awk '行號 等於 2' sed.txt
#NR awk內置變數
Number of Record 記錄號(行號)
案例02:取出sed.txt中包含oldboy或li的行
[root@oldboy81-golden-lnb /oldboy]# sed -rn '/oldboy|li/p' sed.txt
103,li007,COO
110,li,COCO
[root@oldboy81-golden-lnb /oldboy]# awk '/oldboy|li/' sed.txt
103,li007,COO
110,li,COCO
案例03:取出文件第2行到第5行內容
#awk '行號大於等於2 並且 行號小於等於5' sed.txt
#方法01
awk 'NR>=2 && NR<=5' sed.txt #必會
&& 表示並且.
#方法02
sed -n '2,5p' sed.txt
#方法03 了解
awk 'NR==2,NR==5' sed.txt #從行號是2的行開始 到 行號是5的行結束( 了解)
案例04:取出文件第3行到最後一行內容
[root@oldboy81-golden-lnb /oldboy]# awk 'NR >= 3' sed.txt
103,li007,COO
104,yy,CFO
105,feixue,CIO
110,li,COCO
[root@oldboy81-golden-lnb /oldboy]# sed -n '3,$p' sed.txt
103,li007,COO
104,yy,CFO
105,feixue,CIO
110,li,COCO
案例05:取出從包含oldboy的行到li的行
[root@oldboy81-golden-lnb /oldboy]# cat sed.txt
101,oldgirl,CEO
102,zhangya,CTO
103,li007,COO
104,yy,CFO
105,feixue,CIO
110,li,COCO
root@oldboy81-golden-lnb /oldboy]# sed -n '/old/,/li/p' sed.txt
101,oldgirl,CEO
102,zhangya,CTO
103,li007,COO
[root@oldboy81-golden-lnb /爛猜oldboy]# awk '/old/ , /li/' sed.txt
101,oldgirl,CEO
102,zhangya,CTO
103,li007,COO