鹹魚洽談(linux三劍客之一awk)又一個週五,這周你鹹了嗎?
阿新 • • 發佈:2020-12-19
技術標籤:《鹹魚晒太陽~linux基礎命令》
世上無難事,只怕有錢人,鹹魚們也要努力掙錢呀!
對於linux三劍客,鹹魚的理解:會更好的方便我們在編碼中讀取,寫入程式碼。
目錄
awk介紹 & 語法
AWK 是一種處理文字檔案的語言,是一個強大的文字分析工具。
之所以叫 AWK 是因為其取了三位創始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字元。AWK官方文件
語法
awk [選項引數] ‘script’ var=value file(s)
awk [選項引數] -f scriptfile var=value file(s)
引數 | 說明 |
---|---|
-F fs or --field-separator fs | 指定輸入檔案折分隔符,fs是一個字串或者是一個正則表示式,如-F: |
-v var=value or --asign var=value | 賦值一個使用者定義變數。 |
-f scripfile or --file scriptfile | 從指令碼檔案中讀取awk命令。 |
-mf nnn and -mr nnn | 對nnn值設定內在限制,-mf選項限制分配給nnn的最大塊數目;-mr選項限制記錄的最大數目。這兩個功能是Bell實驗室版awk的擴充套件功能,在標準awk中不適用。 |
-W compact or --compat, -W traditional or --traditional | 在相容模式下執行awk。所以gawk的行為和標準的awk完全一樣,所有的awk擴充套件都被忽略。 |
-W help or --help, -W usage or --usage | 列印全部awk選項和每個選項的簡短說明。 |
-W re-interval or --re-inerval | 允許間隔正則表示式的使用,參考(grep中的Posix字元類),如括號表示式[[:alpha:]]。 |
示例
# 每行按空格或TAB分割,輸出文字中的1、4項
[[email protected] ~]# awk '{print $1,$4}' test #test是一個測試檔案
this test
this's
orange linux
[[email protected] ~]# cat test #檔案全部內容
this is a test
this's a test
orange apple mysql linux
[[email protected] ~]#
運算子
運算子 | 描述 |
---|---|
= += -= *= /= %= ^= **= | 賦值 |
?: | C條件表示式 |
|| | 邏輯或 |
&& | 邏輯與 |
~ 和 !~ | 匹配正則表示式和不匹配正則表示式 |
< <= > >= != == | 關係運算符 |
空格 | 連線 |
+ - | 加,減 |
* / % | 乘,除與求餘 |
+ - ! | 一元加,減和邏輯非 |
^ *** | 求冪 |
++ -- | 增加或減少,作為字首或字尾 |
示例
使用正則,字串匹配
#輸出第二列包含 "s",並列印第二列與第四列
awk '$2 ~ /s/ {print $2,$4}' test
[[email protected] ~]# awk '$2 ~ /s/ {print $1,$4}' test
this test
[[email protected] ~]#
#~ 表示模式開始。// 中是模式。
# 輸出包含 "th" 的行
awk '/th/ ' log.txt
[[email protected] ~]# awk '/th/' test
this is a test
this's a test
[[email protected] ~]#
#從檔案中找出長度大於 80 的行:
awk 'length>80' log.txt
[[email protected] ~]# awk 'length>80' aa.awk
seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'
[[email protected] ~]#
awk指令碼
[[email protected] ~]# cat aa.awk
#!/bin/awk -f
seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'
[[email protected] ~]#
[[email protected] ~]# sh aa.awk
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
鹹魚對awk的分享就到這裡了,如果有什麼不懂得可以私聊鹹魚。希望得到大家得認可與點贊收藏~