(八)awk命令

一:printf 格式化輸出bash

%ns:  輸出字符串。n 是數字指代輸出幾個字符spa

%ni:  輸出整數。n 是數字指代輸出幾個數字blog

%m.nf: 輸出浮點數。m 和 n 是數字,指代輸出的整數位數和小數位數。如%8.2f字符串

表明共輸出 8 位數,其中 2 位是小數,6 位是整數。it

split , substr , strlenawk

輸出格式:變量

\a: 輸出警告聲音grep

\b: 輸出退格鍵,也就是 Backspace 鍵im

\f: 清除屏幕數據

\n: 換行

\r: 回車,也就是 Enter 鍵

\t: 水平輸出退格鍵,也就是 Tab 鍵

\v: 垂直輸出退格鍵,也就是 Tab 鍵

printf '%s' $(cat student.txt)

printf '%s\t %s\t %s\t %s\t %s\t %s\t \n' $(cat student.txt)

3: awk 基本使用

awk ‘條件 1{動做 1} 條件 2{動做 2}…’ 文件名

條件(Pattern):

通常使用關係表達式做爲條件。這些關係表達式很是多,具體參考表 12-3 所示,例如:

x > 10 判斷變量 x 是否大於 10

x == y 判斷變量 x 是否等於變量 y

A ~ B 判斷字符串 A 中是否包含能匹配 B 表達式的子字符串

A !~ B 判斷字符串 A 中是否不包含能匹配 B 表達式的子字符串

 

(1)格式化awk輸出

awk '{printf $1 "\n"}' student.txt

printf '%s' $(cat student.txt)

awk '{printf $2 "\t" $6 "\n"}' student.txt

#輸出第二列和第六列

 

 

 

(2)條件輸出打印分數》90同窗的姓名

grep -v "Name" student.txt | awk '$4>=90{ printf $2 "\n" }'

 

(3)awk執行過程

1: 若是有 BEGIN 條件,則先執行 BEGIN 定義的動做

2: 若是沒有 BEGIN 條件,則讀入第一行,把第一行的數據依次賦予$0、$一、$2 等變量。其中$0表明此行的總體數據,$1 表明第一字段,$2 表明第二字段。

3: 依據條件類型判斷動做是否執行。若是條件符合,則執行動做,不然讀入下一行數據。若是沒有條件,則每行都執行動做。

1    讀入下一行數據,重複執行以上步驟。

 

4: awk 內置變量

$1 表示第一列等

$0 表明目前 awk 所讀入的整行數據。咱們已知 awk 是一行一行讀入數據的,$0 就表明當前讀入行的整行數據。

$n  表明目前讀入行的第 n 個字段。

NF  當前行擁有的字段(列)總數。

NR  當前 awk 所處理的行,是總數據的第幾行。

FS  用戶定義分隔符。awk 的默認分隔符是任何空格,若是想要使用其餘分隔符(如「:」),就須要 FS 變量定義。

例子:根據 FS定義分隔符查看用戶

cat /etc/passwd | grep  "/bin/bash" | awk 'BEGIN {FS=":"} {printf $1 "\t\n" }  '

相關文章
相關標籤/搜索