Linux系統命令三劍客之 awk
命令名稱:awk
作用:
對文字和資料進行處理
詳細說明:
awk 是一種程式語言,用於在linux/unix下對文字和資料進行處理。
資料可以來自標準輸入(stdin)、一個或多個檔案,或其它命令的輸出。
它在命令列中使用,但更多是作為指令碼來使用。awk有很多內建的功能,
比如陣列、函式等,這是它和C語言的相同之處,靈活性是awk最大的優勢。
語法格式:
awk [options] 'scripts' var=value filename
常用引數:
-F 指定分隔符(可以是字串或正規表示式)
-f 從指令碼檔案中讀取awk命令
-v var=value 賦值一個使用者定義變數,將外部變數傳遞給awk
awk 指令碼基本結構:
awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' filename
一個awk 指令碼通常由BEGIN語句+模式匹配+END語句三部分組成,這三部分都是可選項
工作原理:
第一步執行BEGIN 語句
第二步從檔案或標準輸入讀取一行,然後再執行pattern語句,逐行掃描檔案到檔案全部被讀取
第三步執行END語句
echo "hello world" | awk 'BEGIN{ print "welcome" } END{ print "2017-08-08" }'
welcome
2017-08-08
echo -e "hello world" | awk 'BEGIN{ print "welcome" } {print} END{ print "2017-08-08" }'
welcome
hello world
2017-08-08
#不加print引數時預設只列印當前的行
[root@mingongge ~]# echo |awk '{ a="hello"; b="nihao"; c="mingongge"; print a,b,c; }'
hello nihao mingongge
#使用print以逗號分隔時,列印則是以空格分界
echo |awk '{ a="mgg"; b="mingg"; c="mingongge"; print a" is "b" or "c; }'
mgg is mingg or mingongge
#awk的print語句中雙引號其實就是個拼接作用
awk 的變數使用:
內建變數
$0 #當前記錄
$1~$n #當前記錄的第N個欄位
FS #輸入欄位分隔符(-F相同作用)預設空格
RS #輸入記錄分割符,預設換行符
NF #欄位個數就是列
NR #記錄數,就是行號,預設從1開始
OFS #輸出欄位分隔符,預設空格
ORS #輸出記錄分割符,預設換行符
外部變數傳入
[mingongge@ ~]#a=100
[mingongge@ ~]#b=100
[mingongge@ ~]#echo |awk '{print v1*v2 }' v1=$a v2=$b
10000
awk 運算與判斷:
算術運算子
+ - 加減
* / & 乘 除 求餘
^ * 求冪
++ -- 增加或減少,作為字首或字尾
[mingongge@ ~]#awk 'BEGIN{a="b";print a,a++,a--,++a;}'
b 0 1 1
[mingongge@ ~]#awk 'BEGIN{a="0";print a,a++,a--,++a;}'
0 0 1 1
[mingongge@ ~]#awk 'BEGIN{a="0";print a,a++,--a,++a;}'
0 0 0 1
#和其它程式語言一樣,所有用作算術運算子進行操作,運算元自動轉為數值,所有非數值都變為0
賦值運算子
= += -= *= /= %= ^= **=
正則運算子
~ !~ 匹配正規表示式/不匹配正規表示式
邏輯運算子
|| && 邏輯或 邏輯與
關係運算子
< <= > >= != =
其它運算子
$ 欄位引用
空格 字串連結符
?: 三目運算子
ln 陣列中是否存在某鍵值
awk 正則:
^ 行首定位符
$ 行尾定位符
. 匹配任意單個字元
* 匹配0個或多個前導字元(包括回車)
+ 匹配1個或多個前導字元
? 匹配0個或1個前導字元
[] 匹配指定字元組內的任意一個字元/^[ab]
[^] 匹配不在指定字元組內的任意一個字元
() 子表示式
| 或者
\ 轉義符
~,!~ 匹配或不匹配的條件語句
x{m} x字元重複m次
x{m,} x字元至少重複m次
X{m,n} x字元至少重複m次但不起過n次(需指定引數-posix或--re-interval)
本文轉自 民工哥 51CTO部落格,原文連結:http://blog.51cto.com/mingongge/1981142
相關文章
- 007 Linux 命令三劍客之-awkLinux
- Linux三大劍客之awkLinux
- Linux (三劍客之三) awk命令詳解Linux
- Linux三劍客之awk詳解Linux
- Linux三劍客Awk、Sed、Grep 命令詳解Linux
- Linux 三劍客 Awk、Sed、Grep 命令詳解Linux
- 【案例】Linux三劍客中awk命令如何使用?Linux
- Linux三劍客之awk入門指引Linux
- Linux常用基本命令:三劍客命令之-awk格式化動作Linux
- Linux檔案處理三劍客之awkLinux
- Linux 三劍客之 awk 實戰詳解教程Linux
- Linux三劍客grep、awk和sedLinux
- Linux:管道命令與文字處理三劍客(grep、sed、awk)Linux
- 效能工具之linux三劍客awk、grep、sed詳解Linux
- linux三劍客(grep、sed、awk)基本使用Linux
- 006 Linux 命令三劍客之-grepLinux
- Linux 三劍客之sedLinux
- Linux三劍客之sedLinux
- Linux三劍客之grep詳解Linux
- Linux 三劍客之 grep 使用詳解Linux
- Linux文字三劍客Linux
- linux系統awk命令使用詳解Linux
- 前端三劍客之HTML前端HTML
- 一篇文章帶你學會Linux三劍客之一:awkLinux
- Linux檔案處理三劍客之sedLinux
- Linux檔案處理三劍客之grepLinux
- Hadoop 三劍客之 —— 分散式檔案儲存系統 HDFSHadoop分散式
- 三劍客詳解之find
- Linux系統中的管道命令、grep命令、sed命令和awk命令Linux
- 雲端計算教程學習路線影片原始碼課件:linux文字處理三劍客之AWK原始碼Linux
- Linux作業系統的中文輸入三劍客淺談(轉)Linux作業系統
- Linux (三劍客之一) grep字串搜尋命令詳解Linux字串
- Linux文字三劍客總結Linux
- UnixLike 系統 awk命令淺析
- 使用linux三劍客取ip地址Linux
- Docker(五):Docker 三劍客之 Docker MachineDockerMac
- Docker(六):Docker 三劍客之 Docker SwarmDockerSwarm
- Linux系統命令之systemctl命令。Linux