目錄 一、awk概念 二、awk的工作過程 三、awk字元 四、內置變數 五、getline 六、awk的精準篩選 七、例子演示 八、實驗演示 一、awk概念 1.概念:awk 是一個功能強大的編輯工具,逐行讀取輸入文本,主要作用於文件內容,AWK信息的讀入也是逐行指定的匹配模式進行查找, 對符合條 ...
目錄
一、awk概念
二、awk的工作過程
三、awk字元
四、內置變數
五、getline
六、awk的精準篩選
七、例子演示
八、實驗演示
一、awk概念
1.概念:awk 是一個功能強大的編輯工具,逐行讀取輸入文本,主要作用於文件內容,AWK信息的讀入也是逐行指定的匹配模式進行查找,
對符合條件的內容進行格式化輸出或者過濾處理。
2.分隔符:預設是空格,多個空格會壓縮一個,可用-F指定分割符
3.awk執行過程:1、按照命令找指定的行 2、找到的行 列印,操作 awk預設的操作就是列印
4.awk優點:可以在無交互的情況下自動化完成文本操作
二、awk的工作過程
1.有BEGIN{action;..}優先執行
2.從(stdin)中讀取內容,執行pattern{action;..}讀取文件內容(沒有pattern執行print內容)
3.執行END{action;..}內容
三、awk字元
1.-F “分隔符” 指明輸入時用到的欄位分隔符,預設的分隔符是若幹個連續空白符
2.-v變數賦值
3.{ }外指定條件,{ }內指定操作。
4.用逗號指定連續的行,用 || 指定不連續的行。&&表示”且“。
5.預設為空格或製表位。與"-F"作用相同 用-F可以不加單引號 -F:,用FS必須用=""
例子演示:
1.-F指定分隔符
2.-v賦值為:,每次出現:就空格
3.{}外條件是數量為0列印,{}里操作是列印
4.,為間隔符||為且&&為或
5.FS定義分割符
四、內置變數
內置變數,不能用雙引號括起來,不然系統會把它當成字元串。
NR: 當前處理的行的行號(序數)
NF: 當前處理的行的欄位個數。$NF代表最後一個欄位
FS: 列分割符。指定每行文本的欄位分隔符,輸入內容的分隔符
預設為空格或製表位。與"-F"作用相同 用-F可以不加單引號 -F:,用FS必須用=""
$0: 當前處理的行的整行內容 列印所有
$n: 當前處理行的第n個欄位(第n列)
OFS:輸出內容的列分隔符
FILENAME:被處理的文件名
RS: 行分隔符。awk從文件中讀取資料時,
將根據RS的定義把資料切割成許多條記錄,而awk一次僅讀入一條記錄進行處理。預設值是"\n"
1.$0$1(在裡面是$0列印所有$1列印一列),在外面0不列印,1列印
2.NR輸出統計行號
3.展示行號以及內容
4.列印指定行號內容
5.範圍列印
6.列印不相連的行
7.正則表達式的範圍列印
8.偶數列印
9.奇數列印
10.BEGIN計算
11.冪運算
五、getline
1.當getline左右無重定向符號(“<”,">")或者管道符號(“|”)時,awk首先讀取的是第一行,而getline獲取的是游標跳轉至下一行的內容(也就是第二行)。
2.當getline左右有管道符號或重定向符時,getline則作用定向輸入文件,由於文件是剛打開,並沒有被awk讀入一行,而只是getline讀入,所以getline返回的是文件的第一行,而不是跳轉至一行輸入
使用getline偶數列印
使用getline奇數列印
使用getline將1.txt傳給2.txt
將1.txt內容傳給2.txt展示出來
六、awk的精準篩選
$n(> < ==): 用於對比數值
$n~"字元串": 代表第n個欄位包含某個字元串
$n!~"字元串": 代表第n個欄位不包含某個字元串
$n=="字元串": 代表第n個欄位為某個字元串
$n!="字元串": 代表第n個欄位不為某個字元串
$NF: 代表最後一個欄位
1.輸出有bash,並且輸出第一列和第7列
2.輸出第七個欄位不包含“nologin”所在行的第一個欄位和最後一個欄位
七、例子演示
1.過濾列印
2.行號加1遞歸
3.過濾passwd展示前4行的第一列
4.替換:換為+
5.以:為分隔符換行輸出
6.列印uid大於1000的用戶信息
7.使用if判斷用戶信息
8.三元表達式,?相當於then,:相當於else
9.awk中的數組形成遍歷
八、實驗演示
1.簡單的日誌分割
2.提取host.txt主機名後再放回host.txt文件
3.統計磁碟可用容量
4.統計/etc下文件總大小
5.CPU使用率
6.統計記憶體