麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > 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其名稱得自于它的創(chuàng)始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首個字母。實際上 AWK 的確擁有自己的語言: AWK 程序設計語言 , 三位創(chuàng)建者已將它正式定義為“樣式掃描和處理語言”。它允許您創(chuàng)建簡短的程序,這些程序讀取輸入文件、為數據排序、處理數據、對輸入執(zhí)行計算以及生成報表,還有無數其他的功能。

使用方法

awk '{pattern + action}' {filenames}

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

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

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

調用awk

有三種方式調用awk

說明:

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

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. 執(zhí)行BEGIN{commands}語句塊中的語句
2. 從文件或者stdin中讀取一行,然后執(zhí)行pattern{commands}. 迭代直到全部讀取完畢
3. 最后執(zhí)行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
啟用一些優(yōu)化程序的內部表示。
     -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
打印關于不能向傳統(tǒng)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
傳統(tǒng)的Unix awk的正則表達式匹配
     -W usage        --usage
     -W use-lc-numeric    --use-lc-numeric
解析數字輸入時,強制使用的語言環(huán)境中的小數點字符
 數據
 -W version        --version
提交錯誤報告請參考“gawk.info”中的“Bugs”頁,它位于打印版本中的“Reporting
 Problems and Bugs”一節(jié)

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

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

部分特殊變量:

NR: 表示記錄數量,在執(zhí)行過程中對應于行號
NF:表示字段數量,在執(zhí)行過程中對應于當前行的字段數
$0: 這個變量包含執(zhí)行過程中當前行的文本內容
$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 主站蜘蛛池模板: china对白普通话xxxx | 国产成人精品视频在线 | 国产精品观看在线亚洲人成网 | 国产精品99久久久久久大便 | 黄色片网站免费看 | 久久国产精品久久久久久电车 | 久久国产精品久久久久久久久久 | xxxxhd86日本护士hd | 羞羞视频免费观看网站 | 91短视频在线视频 | 精品一区二区三区在线观看国产 | 亚洲精品无码不卡在线播放he | 日本看片一区二区三区高清 | 性爱视频免费 | 精品国产91久久久久久 | 国产成人精品区一区二区不卡 | 高清国产免费 | 97久久精品一区二区三区观看 | 黄色网电影 | 涩涩操| 一区二区三区日韩精品 | 91精品国产92久久久久 | 久久综合久久综合久久 | 成人毛片视频在线观看 | 国产精品jk白丝蜜臀av软件 | 精品一区二区三区网站 | 免费在线观看国产精品 | av中文在线观看 | 免费观看欧美一级片 | 毛片一级网站 | 日韩在线播放中文字幕 | 91网在线播放 | 中国女警察一级毛片视频 | 欧美日韩国产成人在线观看 | 91精品久久香蕉国产线看观看 | 欧美一级做性受免费大片免费 | 成人啪啪18免费网站 | 国产精品jk白丝蜜臀av软件 | 99国语露脸久久精品国产ktv | 成人超碰97 | 国产精品av久久久久久久久久 |