一: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" } '