亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Linux Shell > 正文

一天一個shell命令 linux文本內容操作系列-awk命令詳解

2020-07-27 19:02:10
字體:
來源:轉載
供稿:網友

簡介

awk是一個強大的文本分析工具,相對于grep的查找,sed的編輯,awk在其對數據分析并生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進行各種分析處理。
awk有3個不同版本: awk、nawk和gawk,未作特別說明,一般指gawk,gawk 是 AWK 的 GNU 版本。
awk其名稱得自于它的創始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首個字母。實際上 AWK 的確擁有自己的語言: AWK 程序設計語言 , 三位創建者已將它正式定義為“樣式掃描和處理語言”。它允許您創建簡短的程序,這些程序讀取輸入文件、為數據排序、處理數據、對輸入執行計算以及生成報表,還有無數其他的功能。

使用方法

awk '{pattern + action}' {filenames}

盡管操作可能會很復雜,但語法總是這樣,其中 pattern 表示 AWK 在數據中查找的內容,而 action 是在找到匹配內容時所執行的一系列命令?;ɡㄌ枺▄})不需要在程序中始終出現,但它們用于根據特定的模式對一系列指令進行分組。 pattern就是要表示的正則表達式,用斜杠括起來。

awk語言的最基本功能是在文件或者字符串中基于指定規則瀏覽和抽取信息,awk抽取信息后,才能進行其他文本操作。完整的awk腳本通常用來格式化文本文件中的信息。

通常,awk是以文件的一行為處理單位的。awk每接收文件的一行,然后執行相應的命令,來處理文本。

調用awk

有三種方式調用awk

說明:

awk被設計用于數據流,能夠對列和行進行操作。而sed更多的是匹配,進行替換和刪除。
awk有很多內建的功能,比如數組,函數等。靈活性是awk的最大優勢。

awk的結構
awk '
BEGIN{ print "start"}
pattern { commands }
END{ print "end"}'
file
為了偏于觀看,我打了回車,實際上是一行

一個awk腳本通常是3部分
1. BEGIN語句塊
2. 能夠使用模式匹配的通用語句塊
3. END語句塊
 他們任何一部分都可以不出現在腳本中。腳本通常包含在雙引號或者單引號內。
 例如:

awk 'BEGIN{i=0}{i++}END{print i}' filename 

工作原理

awk命令的工作方式如下:

1. 執行BEGIN{commands}語句塊中的語句
2. 從文件或者stdin中讀取一行,然后執行pattern{commands}. 迭代直到全部讀取完畢
3. 最后執行END{commands}語句塊

再次提醒,他們任何一部都可以沒有

而awk的功能也遠不止如此

入門實例:

復制代碼 代碼如下:

echo | awk '{var1="v1";var2="v2";var3="v3"; print var1,var2,var3;}' 
打印: v1 v2 v3 

解釋:逗號為定界符(分隔符)

echo | awk '{var1="v1";var2="v2";var3="v3"; print var1"-"var2"-"var3;}'

打印v1-v2-v3

解釋:雙引號為連接符

其他任何符號,都不能正常輸出v1,v2,v3

解讀--help(一個非常龐大復雜的幫助文檔,官方用了410頁的篇幅PDF來介紹,如果我只言片語,你信我自己都不信。。)

用法: awk [POSIX 或 GNU 風格選項] -f 腳本文件 [--] 文件 ...
用法: awk [POSIX 或 GNU 風格選項] [--] '程序' 文件 ...
POSIX 選項:             GNU 長選項:
     -f 腳本文件        --file=腳本文件
    -F fs            --field-separator=fs
指定輸入文本分隔符,fs是一個字符串或者是一個正則表達式,
    -v var=val        --assign=var=val
將外部變量值付給var
     -m[fr] val
     -O            --optimize
啟用一些優化程序的內部表示。
     -W compat        --compat
在兼容模式下運行awk。所以gawk的行為和標準的awk完全一樣,所有的awk擴展都被忽略。
     -W copyleft        --copyleft
打印簡短的版權信息
    -W copyright        --copyright
打印短版的通用公共許可證,然后退出
     -W dump-variables[=file]    --dump-variables[=file]
打印全局變量,其類型,提交的最終值的排序列表。
    -W exec=file        --exec=file
與-f類似,但與他有兩點不同,(我回頭把相關文檔上傳,太長)
    -W gen-po        --gen-po
(內容太多)
    -W help            --help 打印幫助
    -W lint[=fatal]        --lint[=fatal]
警告可疑或不移植到其他的awk實現的結構
     -W lint-old        --lint-old
打印關于不能向傳統unix平臺移植的結構的警告
     -W non-decimal-data    --non-decimal-data
啟用自動輸入數據的解釋,八進制和十六進制值
     -W profile[=file]    --profile[=file]
啟用awk程序剖析
     -W posix        --posix
在嚴格意義上的POSIX模式運作。
     -W re-interval        --re-interval
允許間隔表達式在正則表達式上
    -W source=program-text    --source=program-text
     -W traditional        --traditional
傳統的Unix awk的正則表達式匹配
     -W usage        --usage
     -W use-lc-numeric    --use-lc-numeric
解析數字輸入時,強制使用的語言環境中的小數點字符
 數據
 -W version        --version
提交錯誤報告請參考“gawk.info”中的“Bugs”頁,它位于打印版本中的“Reporting
 Problems and Bugs”一節

注意:gawk是awk的GNU版本,即使help ,在ubuntu下也需要先安裝gawk

這回我們就不解讀了,為了增加大家的信息和樂趣,先來點基本的:

部分特殊變量:

NR: 表示記錄數量,在執行過程中對應于行號
NF:表示字段數量,在執行過程中對應于當前行的字段數
$0: 這個變量包含執行過程中當前行的文本內容
$1: 第一個字段的文本內容
$2: 第二個字段的文本內容

例子:

例1.

復制代碼 代碼如下:

echo -e "line1 f2 f3/nline2 f4 f5/nline3 f6 f7"|/#這個/是在窗口中寫多行命令用的 
awk '{ 
print "Line no:"NR",No of fields:"NF, "$0="$0,"$1="$1,"$2="$2,"$3="$3 
}' 

小注一下:$1是打印第一個,$NF打印最后一個字段,$(NF-1)打印倒數第二個

 例2.

seq 5 | awk 'BEGIN{ sum=0;print "Summation:"}{print $1"+";sum+=1}END{print "==";print sum}'

這個例子用到了基本格式。

BEGIN中 初始化了sum,打印Summation
中間模塊打印了第一列,然后給sum+1

END中打印了sum

 例3. 關于-v 外部變量

復制代碼 代碼如下:

$ VAR=10000
$echo | awk 亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美在线视频一二三| 奇米4444一区二区三区| 国产亚洲一区二区精品| 亚洲国产精品系列| 日本精品视频在线观看| 亚洲国产精品va在线看黑人| 大桥未久av一区二区三区| 中日韩午夜理伦电影免费| 精品自拍视频在线观看| 庆余年2免费日韩剧观看大牛| 欧美日韩裸体免费视频| 精品国产自在精品国产浪潮| 中文字幕久热精品视频在线| 国产亚洲福利一区| 在线观看不卡av| 亚洲欧美国产日韩天堂区| 欧美成人四级hd版| 中文字幕欧美在线| 久久久久久久国产精品| 美女视频黄免费的亚洲男人天堂| 国a精品视频大全| 亚洲毛片在线看| 日韩中文字幕视频在线观看| 91av视频在线免费观看| 97婷婷涩涩精品一区| 77777少妇光屁股久久一区| 亚洲国产婷婷香蕉久久久久久| 久久久久久久国产精品视频| 亚洲成人教育av| 岛国av一区二区| 欧美一区二区三区四区在线| 国产一区二区三区丝袜| 日韩av中文字幕在线播放| 午夜欧美大片免费观看| 一区二区三区视频观看| 91精品啪在线观看麻豆免费| 欧美亚洲另类激情另类| 久久久久久国产| 亚洲九九九在线观看| 国产欧美亚洲视频| 久久影视三级福利片| 亚洲国产精彩中文乱码av在线播放| 成人激情春色网| 日韩精品中文字幕有码专区| 97色在线播放视频| 欧美色道久久88综合亚洲精品| 亚洲已满18点击进入在线看片| 成人观看高清在线观看免费| 亚洲欧美国产制服动漫| 久久久精品免费视频| 91精品视频专区| 中文字幕精品一区久久久久| 国外日韩电影在线观看| 欧美成人免费大片| 91av在线看| 亚洲精品视频二区| 久久99精品久久久久久青青91| 精品一区电影国产| 岛国精品视频在线播放| 欧美夫妻性视频| 日韩欧美福利视频| 亚洲欧美另类在线观看| 亚洲精品按摩视频| 中文字幕欧美在线| 91精品在线观看视频| 国产精品青青在线观看爽香蕉| 国内精品在线一区| 久久久久久久久久久久久久久久久久av| 久热精品视频在线| 51午夜精品视频| 亚洲欧洲xxxx| 黄色一区二区在线| 日韩亚洲欧美成人| 91精品国产色综合久久不卡98口| 91超碰中文字幕久久精品| 亚洲深夜福利网站| 日韩av在线电影网| 最近2019年好看中文字幕视频| 波霸ol色综合久久| 亚洲高清在线观看| 久久免费精品日本久久中文字幕| 91精品啪aⅴ在线观看国产| 国产丝袜一区视频在线观看| 日本欧美爱爱爱| 综合网中文字幕| 亚洲国产精品久久久久秋霞蜜臀| 69视频在线免费观看| 97久久超碰福利国产精品…| 成人在线中文字幕| 日韩在线观看精品| 欧美精品国产精品日韩精品| 欧美激情国产高清| 97视频免费在线观看| 国产日韩欧美在线| 51ⅴ精品国产91久久久久久| 精品国产区一区二区三区在线观看| www.欧美免费| 亚洲资源在线看| 成人久久久久久久| 亚洲女人被黑人巨大进入| 亚洲国产精品久久| 57pao成人国产永久免费| 久久精品国产2020观看福利| 伊人伊成久久人综合网站| 亚洲iv一区二区三区| 欧美精品18videosex性欧美| 欧美福利在线观看| 精品久久久av| 日韩欧中文字幕| 精品国产一区二区三区久久久狼| 欧美成人精品三级在线观看| 国产成+人+综合+亚洲欧洲| 国产精品久久久久久久久久久新郎| 日韩成人激情在线| 亚洲欧美三级伦理| 欧美高清视频在线| 欧美最猛性xxxxx亚洲精品| 成人国内精品久久久久一区| 97超级碰碰碰久久久| 国产日产欧美a一级在线| 亚洲福利在线看| 欧美性视频在线| 国产欧美日韩免费看aⅴ视频| 久久中文字幕在线视频| 久久久这里只有精品视频| 欧美综合在线观看| 欧美整片在线观看| 美女黄色丝袜一区| 亚洲精品456在线播放狼人| 热久久99这里有精品| 亚洲第一页在线| 亚洲欧美日韩一区二区三区在线| 国产欧美精品xxxx另类| 国产成人极品视频| 日韩在线观看免费全| 国产精品第100页| 成人春色激情网| 欧美一区二区三区四区在线| 欧美激情亚洲视频| 欧美一区二区三区精品电影| 欧美大片免费观看| 国产一区二区三区在线观看网站| 国产97人人超碰caoprom| 欧美日在线观看| 亚洲日本中文字幕免费在线不卡| 亚洲天堂免费观看| 高跟丝袜一区二区三区| 久久精品视频中文字幕| 97国产一区二区精品久久呦| 亚洲免费电影在线观看| 91色精品视频在线| 久久九九免费视频| 亚洲日本中文字幕免费在线不卡| 日韩精品中文字幕在线观看| 国产亚洲一区精品| 91wwwcom在线观看| 亚洲视频在线观看视频| 亚洲男人av在线| 亚洲色图五月天| 久久中国妇女中文字幕| 成人黄色免费在线观看| 日韩在线免费视频| 精品亚洲va在线va天堂资源站| 中文字幕免费精品一区高清|