Linux學習筆記正則表達式awk

awk和sed同樣是流式編輯器,它也是針對文檔中的行來操做的,一行一行的去執行。awk比sed更增強大,它能作到sed能作到的,一樣也能作到sed不能作到的。awk工具實際上是很複雜的,可是學那麼複雜沒有必要,只要能處理平常管理工做中的問題便可。bash

1.截取文檔中的某個命令編輯器

-F選項的做用是指定分隔符。若是不加-F選項,則以空格或者TAB爲分隔符。print爲打印的動做,用來打印某個字段。$1爲第1個字段,$2爲第2個字段,$0表示整行工具

2.匹配字符或者字符串文檔

3.條件操做符字符串

awk中是能夠用邏輯符號判斷的,好比 ‘==’ 就是等於,也能夠理解爲 ‘精確匹配’ 另外也有 >, ‘>=, ‘<, ‘<=, ‘!= 等等,值得注意的是,在和數字比較時,若把比較的數字用雙引號引發來後,那麼awk不會認爲是數字,而認爲是字符,不加雙引號則認爲是數字。數學

另外還可使用 && 和 || 表示 「而且」 和 「或者」 的意思。test

4.awk的內置變量awk

awk經常使用的變量有:變量

NF :用分隔符分隔後一共有多少段sed

NR :行數

NF 是多少段,而$NF是最後一段的值, 而NR則是行號。

5.awk中的數學運算

awk能夠把段值更改:

習題

  1. 用awk 打印整個test.txt (如下操做都是用awk工具實現,針對test.txt)
  2. 查找全部包含 ‘bash’ 的行
  3. 用 ‘:’ 做爲分隔符,查找第三段等於0的行
  4. 用 ‘:’ 做爲分隔符,查找第一段爲 ‘root’ 的行,並把該段的 ‘root’ 換成 ‘toor’ (能夠連同sed一塊兒使用)
  5. 用 ‘:’ 做爲分隔符,打印最後一段
  6. 打印行數大於20的全部行
  7. 用 ‘:’ 做爲分隔符,打印全部第三段小於第四段的行
  8. 用 ‘:’ 做爲分隔符,打印第一段以及最後一段,而且中間用 ‘@’ 鏈接 (例如,第一行應該是這樣的形式 'root@/bin/bash‘ )
  9. 用 ‘:’ 做爲分隔符,把整個文檔的第四段相加,求和

答案

1. awk '{print $0}' test.txt
2. awk '/bash/' test.txt
3. awk -F':' '$3=="0"' test.txt
4. awk -F':' '$1=="root"' test.txt |sed 's/root/toor/'
5. awk -F':' '{print $NF}' test.txt
6. awk -F':' 'NR>20' test.txt
7. awk -F':' '$3<$4' test.txt
8. awk -F':' '{print $1"@"$NF}' test.txt
9. awk -F':' '{(sum+=$4)}; END {print sum}' test.txt
相關文章
相關標籤/搜索