awk
Linux/UNIX 系統(tǒng)中,awk 是一個功能強(qiáng)大的編輯工具。逐行讀取輸入文本
以空格作為分割符,多個空格他會自動壓縮成一個空格
AWK信息的讀入也是逐行指定的匹配模式進(jìn)行查找,對符合條件的內(nèi)容進(jìn)行格式化輸出或者過濾處理.
1按照命令找指定的行? 2.找到的行 打印,操作
awk 默認(rèn)的方式就是打印? 把結(jié)果給你輸出到屏幕上
可以在無交互 的情況下實現(xiàn)相當(dāng)復(fù)雜的文本操作,被廣泛應(yīng)用于 Shell 腳本,完成各種自動化配置任務(wù)。
命令結(jié)構(gòu)
awk ‘< pattern> <acion>’ <iuput-file>? ?#只能那個用單引號引起來
? ? ? ? ? 操作符? ? ? 怎么干? ? ?處理對象??
awk 的工作過程
1先看BEGIN{action)這個模塊是讀取操作,讀文件的所有行,所有讀取完畢,然后一次執(zhí)行
2.END{bction)打印。輸出結(jié)果,對前面的結(jié)果,條件判斷,還可以用代碼接著操作
awk的工作流程就是對行進(jìn)行處理? 然后區(qū)列
?工作原理
sed命令常用于一整行的處理,而awk比較傾向于將一行分成多個“字段”然后再進(jìn)行處理
目錄
awk的基本格式及其內(nèi)置變量
awk 選項 '模式或條件 {操作}' 文件1 文件2.
-F? :|?? ? 加上指定分隔符
-v? 變量賦值
注意一定是單引號:'模式或條件 {操作}
{ }外指定條件,{ }內(nèi)指定操作。
內(nèi)置變量
不能用雙引號括起來,不然系統(tǒng)會把它當(dāng)成字符串
內(nèi)置變量
$0 | 當(dāng)前處理的行的整行內(nèi)容 ?打印所有 |
$n |
當(dāng)前處理行的第n個字段(第n列) |
NR | 當(dāng)前處理的行的行號(序數(shù)) |
NF |
當(dāng)前處理的行的字段個數(shù)。$NF代表最后一個字段 |
FS | 列分割符。指定每行文本的字段分隔符,輸入內(nèi)容的分隔符, |
命令行操作
這是aed '?'? 打印的方式
這是awk ‘{print}’? 打應(yīng)的方式?
?
?awk ‘1{peint}’ 2.txt? 這兩個是一個意思? ? 加1和不加一
awk '{peint}' 2.txt
?$0 是全部打印
awk '{print $0}' 2.txt
先看這張圖就好理解了? 對沒行的列進(jìn)行處理? 也就是切片
?
$0 是打印所有內(nèi)容 后面加上2 3 4 就是打印他的列數(shù)
實戰(zhàn)演練對 /etc/passwd 提取第1列和第4列
既有行號也有內(nèi)容
awk '{print NE,$0}' /etc/passwd
?
awk 'NR==3{print}'? 3.txt ? ?指定打印出第三行的內(nèi)容
?
?awk 'NR==3,NR==5{print}' test1.txt ?----打印3-5行的內(nèi)容
這邊要主要下冒號 逗號不要搞混 了
awk 'NR==3,NR==5{print}' 3.txt ?----打印3 4 5行的內(nèi)容
awk 'NR==3;NR==5{print}' 3.txt ?----打印第3行和第5行
awk '(NR>=3)&&(NR<=5){print}' test1.txt -----正則的表達(dá)方式,打印3-5行的內(nèi)容
奇偶行打印
awk 'NR%2==0{print}' test1.txt #打印偶數(shù)行
?awk 'NR%2==1{print}' test1.txt #打印奇數(shù)行
?awk運算:
?getline
?getline的工作過程
1、當(dāng)getline左右無重定向符號(“<”,">")或者管道符號(“|”)時,
打印偶數(shù)行
awk '{getline;print $0}' test1.txt #相當(dāng)于打印了偶數(shù)行
?
?getline作用
getline沒有重定向? 沒有管道符就是打印奇偶行?
awk '{print $0;getline}' test1.txt #相當(dāng)于打印了奇數(shù)行
2、當(dāng)getline左右有管道符號或重定向符時?
作用:就是從指定文件獲取內(nèi)容>輸出到新的文件里? $0代表全量? 也就是全部的意思
?awk '{getline < "1.txt"; print $0 > "ky30.txt";}' 3.txt?#使用重定向把1.txt輸出給ky30
?第一個:getline是awk的一個內(nèi)置函數(shù)
?第二個:沒有重定向和管道符,就是奇偶行
第三個: 重定向,就從指定文件獲取內(nèi)容,|,賦值變量文章來源:http://www.zghlxwxcb.cn/news/detail-475225.html
文件內(nèi)容匹配過濾打印
文章來源地址http://www.zghlxwxcb.cn/news/detail-475225.html
到了這里,關(guān)于文本三劍客之 awk的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!