1. 程式人生 > >Linux常用基本命令:三劍客命令之-awk格式化動作

Linux常用基本命令:三劍客命令之-awk格式化動作

c語言 style linux 轉義字符 int color linu %s BE

我們之前說過,awk是一個超強的文本格式化工具,而本文的printf動作就是經常用來做格式化文本的。使用方式跟c語言的printf差不多.

1,printf默認不會回車換行

ghostwu@dev:~/linux/awk$ awk BEGIN{print "abc"}
abc
ghostwu@dev:~/linux/awk$ awk BEGIN{printf "abc"}
abcghostwu@dev:~/linux/awk$ 

2,我們需要像c語言一樣,用轉義字符\n,輸出換行

ghostwu@dev:~/linux/awk$ awk BEGIN{printf "%s\n", "ghostwu"}
ghostwu

小結:

1)使用printf動作 輸出的文本不會換行,如果需要換行,可以在對應的"格式替換符"後加入"\n"進行轉義

2)使用printf動作時,"指定的格式" 與 "被格式化的文本" 之間,需要用"逗號"隔開

3)使用printf動作時,"格式"中的"格式替換符"必須與 "被格式化的文本" 一一對應

3,一一對應的 “被格式化的文本” 與 "格式替換符

ghostwu@dev:~/linux/awk$ awk {printf "第一列: %s  第二列: %s 第三列: %s\n", $1, $2, $3} ghostwu.txt 
第一列: ghostwu  第二列: 
20 第三列: man 第一列: zhangsan 第二列: 22 第三列: woman 第一列: lisi 第二列: 23 第三列: woman

4,用 -v FS指定輸入分隔符,然後用printf格式化分隔後的文本

ghostwu@dev:~/linux/awk$ cat ghostwu.txt 
ghostwu-20-man
zhangsan-22-woman
lisi-23-woman

ghostwu@dev:~/linux/awk$ awk -v FS=- {printf "%s\t %s\t %s\n", $1, $2, $3} ghostwu.txt 
ghostwu     
20 man zhangsan 22 woman lisi 23 woman

5,常用的字符串格式化, 10s -10s. 10s:字符串寬度為10,不足10位,左邊補空格,就形成了右對齊方式, -10s就是左對齊方式

ghostwu@dev:~/linux/awk$ awk -v FS="-" BEGIN{printf "%10s\t %10s\t %10s\n", "姓名", "年齡", "性別"}  {printf "%10s\t %10s\t %10s\n", $1, $2, $3 } ghostwu.txt
        姓名             年齡             性別
   ghostwu             20            man
  zhangsan             22          woman
      lisi             23          woman
ghostwu@dev:~/linux/awk$ awk -v FS="-" BEGIN{printf "%-10s\t %-10s\t %-10s\n", "姓名", "年齡", "性別"}  {printf "%-10s\t %-10s\t %-10s\n", $1, $2, $3 } ghostwu.txt
姓名             年齡             性別        
ghostwu        20             man       
zhangsan       22             woman     
lisi           23             woman   

Linux常用基本命令:三劍客命令之-awk格式化動作