1. 程式人生 > >2018-1-17 Linux學習筆記(awk)[重要]

2018-1-17 Linux學習筆記(awk)[重要]

標準輸入 == 行處理 c語言 開始 正則表達 正則表達式 $2 指定

9.6 awk(上)

awk是一種編程語言,用於在linux/unix下對文本和數據進行處理。數據可以來自標準輸入(stdin)、一個或多個文件,或其它命令的輸出。它支持用戶自定義函數和動態正則表達式等先進功能,是linux/unix下的一個強大編程工具。它在命令行中使用,但更多是作為腳本來使用。awk有很多內建的功能,比如數組、函數等,這是它和C語言的相同之處,靈活性是awk最大的優勢。


head -n2 test.txt | awk -F ‘:‘ ‘{print $1}‘ ---->截取文檔中的第一,二行的第1個字段
head -n2 test.txt | awk -F ‘:‘ ‘{print $0}‘ ---->截取文檔中的第一,二行整行

head -n2 test.txt | awk -F ‘:‘ ‘{print $1 "#" $2 "#" $3 "#" $4}‘ ---->截取文檔中的第一,二行的第1,2,3,4個字段
awk ‘/oo/‘ test.txt ---->截取文檔中含有oo的行
awk -F ‘:‘ ‘/root/ {print $1,$3} /user/ {print $3,$4}‘ test.txt ---->截取文檔中含有root的行的1,3字段和含有user行的3,4字段
awk -F ‘:‘ ‘$3=="0"‘ test.txt ---->截取文檔中的第3字段等於0的行
awk -F ‘:‘ ‘$3>="500"‘ test.txt ---->截取文檔中的第3字段大於等於字符串500(Ascll值)的行
awk -F ‘:‘ ‘$3>=500‘ test.txt ---->截取文檔中的第3字段大於等於500的行
awk -F ‘:‘ ‘$7!="/sbin/nologin"‘ test.txt ---->截取文檔中的第7字段不等於/sbin/nologin的行


備註:
-F 選項的作用是指定分隔符,如果不加-F指定,則以空格或者tab為分隔符。 Print為打印的動作,用來打印出某個字段。$1為第一個字段,$2為第二個字段,依次類推,有一個特殊的那就是$0,它表示整行。

9.7 awk(下)

awk -F ‘:‘ ‘$3<$4‘ test.txt ---->截取文檔中的第3字段之值小於4個字段之值的行
awk -F ‘:‘ ‘$3>"5" && $3<"7"‘ test.txt ---->截取文檔中的第3字段大於5小於7的行
awk -F ‘:‘ ‘$3>1000 || $7=="/bin/bash"‘ test.txt ---->截取文檔中的第3字段大於1000並且第7字段不等於/bin/bash的行

  • 截取文檔中的前5行的第1,3,4字段並且使用#作為分隔符輸出:
    head -n5 test.txt | awk -F ‘:‘ ‘{OFS="#"}{print $1,$3,$4}‘
  • 截取文檔中第3字段大於1000的行的第1,2,3,4字段並且使用#作為分隔符輸出:
    awk -F ‘:‘ ‘{OFS="#"}{if($3>1000){print $1,$2,$3,$4}}‘ test.txt

head -n3 test.txt | awk -F ‘:‘ ‘{pirnt NF}‘ ---->截取文檔前3行然後將每一行的段數打印出來
head -n3 test.txt | awk -F ‘:‘ ‘{pirnt NR}‘ ---->截取文檔前3行然後將每一行的行號打印出來
awk ‘NR>40‘ test.txt ---->截取文檔從第40行開始的所有行

head -n3 test.txt | awk -F ‘:‘ ‘$1="root"‘ ---->截取文檔前3行並將每行的第1字段改為root
awk -F ‘:‘ ‘{(tot=tot+$3)};END {print tot}‘ test.txt ---->將文檔每行的第3字段求和並打印出來
awk -F ‘:‘ ‘{if ($1=="root") {print $0}}‘ test.txt ---->如果一行的第1字段等於root,則將該行打印出來
awk -F ‘:‘ ‘NR<=20 && $1 ~ /roo/‘ test.txt ---->打印文檔前20行行中第1字段含有roo的所有行


備註:
awk常用的變量有:
NF :段數, 用分隔符分隔後一共有多少段
NR :行數
OFS :打印出來時指定分隔符用
END :表示所有的行都已經執行

2018-1-17 Linux學習筆記(awk)[重要]