第八周筆記

awk 文本三劍客之一,文本處理工具

awk分為Gawk Pawk Dawk Centos用的是Gawk
模式掃描處理的語言
/user/bin/awk awk的路徑

awk的使用語法
awk [選項] `program` var=value file…..(變量賦值)
awk [options] ‘program’ var=value file…
awk [options] -f programfile var=value file… -f 調用語言文件
awk [options] ‘BEGIN{ action;… } pattern{ action;… } END{ action;… }’ file …
awk 程序通常由:BEGIN語句塊、能夠使用模式匹配的通用語句塊、END語句塊,共3部
分組成
program通常是被單引號或雙引號中

選項:
-F 指明輸入時用到的字段分隔符
-v var=value: 自定義變量

行: 記錄record 定義分隔符 一個分隔符算一行 (分隔符自定義 默認是空格)
列:字段 或者 域field 或者 屬性 分割符之前的任意分開的算一個字段

基本格式:awk [options] ‘program’ file…
?program:pattern{action statements;..}
?pattern和action:
? pattern部分決定動作語句何時觸發及觸發事件
BEGIN,END
? action statements對數據進行處理,放在{}內指明
print, printf(打印里面的內容)
?分割符、域和記錄
? awk執行時,由分隔符分隔的字段(域)標記$1,$2..$n稱為域標識。$0為所有域,
注意:和shell中變量$符含義不同
? 文件的每一行稱為記錄
? 省略action,則默認執行 print $0 的操作

awk的工作原理
第一步:執行BEGIN{action;… }語句塊中的語句 BEGIN經常用于處理表頭(開始)
? 第二步:從文件或標準輸入(stdin)讀取一行,然后執行pattern{ action;… }語句塊,它
逐行掃描文件,從第一行到最后一行重復這個過程,直到文件全部被讀取完畢。
? 第三步:當讀至輸入流末尾時,執行END{action;…}語句塊 end做匯總用
? BEGIN語句塊在awk開始從輸入流中讀取行之前被執行,這是一個可選的語句塊,比如
變量初始化、打印輸出表格的表頭等語句通常可以寫在BEGIN語句塊中
? END語句塊在awk從輸入流中讀取完所有的行之后即被執行,比如打印所有行的分析
結果這類信息匯總都是在END語句塊中完成,它也是一個可選語句塊
? pattern語句塊中的通用命令是最重要的部分,也是可選的。如果沒有提供pattern語句
塊,則默認執行{ print } ,即打印每一個讀取到的行,awk讀取的每一行都會執行該語句塊

print格式: print item1, item2, …
? 要點:
(1) 逗號分隔符
(2) 輸出的各item可以字符串,也可以是數值;當前記錄的字段、變量或awk的表達式
(3) 如省略item,相當于print $0
示例:
awk ‘{print “hello,awk”}’

awk –F: ‘{print}’ /etc/passwd
awk –F: ‘{print “wang”}’ /etc/passwd
awk –F: ‘{print $1}’ /etc/passwd
awk –F: ‘{print $0}’ /etc/passwd
awk –F: ‘{print $1”\t”$3}’ /etc/passwd (\t)tab鍵 用換行符作為分割符
tail –3 /etc/fstab |awk ‘{print $2,$4}’ 倒數三行的$2$4字段

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/99003

(0)
胖噠胖噠
上一篇 2018-05-20 17:47
下一篇 2018-05-20 18:54

相關推薦

  • 網絡管理基礎

    IP地址由網絡ID和主機ID組成 A類:0 000 0000 – 0 111 1111:1-127 網絡數:126 每個網絡中的主機數2^ 24-2=16777214 B類:10 00 0000 – 10 11 1111:128-191 網絡數:2^ 14=16384 每個網絡中的主機數:2^ 16–2=65534 C類:100 0 …

    2018-04-01
  • 學習筆記(7)

    學習筆記(7)

    Linux筆記 2018-04-22
  • 一次性任務:at命令

    一次性任務:at命令at使用必備1th:1)type at2)rpm -qf path3)yum install 包名4)rpm -ql at (有atd.service發現它也是個服務,即要使用at必須要開啟這個服務)2th:1)systemctl status atd (active running)2)systemctl start atd3th:nt…

    Linux筆記 2018-05-06
  • shell腳本進階

    本節主要學習判斷語句,循環語句還有函數,數組等一些腳本中常用的語法,這些會讓你的腳本看起來更美觀,易讀性更高

    2018-05-11
  • linux學習-2周

    文本處理工具、cat/rev/more/less/head/tail/cut/paste/wc/sort/uniq/diff/grep

    2018-04-08
  • grep運用及深化

    grep運用及深化
    知識點:1.https://blog.csdn.net/weixin_36689020/article/details/53230529
    2.https://www.cnblogs.com/tsw1107/p/2264a01aeec481d2044dfeda01417c64.html

    Linux筆記 2018-06-03
欧美性久久久久