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

Posted ghostwu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux常用基本命令:三剑客命令之-awk格式化动作相关的知识,希望对你有一定的参考价值。

我们之前说过,awk是一个超强的文本格式化工具,而本文的printf动作就是经常用来做格式化文本的。使用方式跟c语言的printf差不多.

1,printf默认不会回车换行

[email protected]:~/linux/awk$ awk BEGIN{print "abc"}
abc
[email protected]:~/linux/awk$ awk BEGIN{printf "abc"}
[email protected]:~/linux/awk$ 

2,我们需要像c语言一样,用转义字符\n,输出换行

[email protected]:~/linux/awk$ awk BEGIN{printf "%s\n", "ghostwu"}
ghostwu

 小结:

1)使用printf动作 输出的文本不会换行,如果需要换行,可以在对应的"格式替换符"后加入"\n"进行转义

2)使用printf动作时,"指定的格式" 与 "被格式化的文本" 之间,需要用"逗号"隔开

3)使用printf动作时,"格式"中的"格式替换符"必须与 "被格式化的文本" 一一对应

3,一一对应的 “被格式化的文本” 与 "格式替换符

[email protected]:~/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格式化分隔后的文本

[email protected]:~/linux/awk$ cat ghostwu.txt 
ghostwu-20-man
zhangsan-22-woman
lisi-23-woman

[email protected]:~/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就是左对齐方式

[email protected]:~/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
[email protected]:~/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格式化动作的主要内容,如果未能解决你的问题,请参考以下文章

Linux常用基本命令:三剑客命令之-awk动作用法

Linux常用基本命令:三剑客命令之-awk模式用法

Linux常用基本命令:三剑客命令之-awk 三元表达式

linux12shell编程 --> 三剑客之awk命令

Linux与bash:2.Linux终端命令之三剑客命令(grep,sed,awk)

文本处理工具awk常用命令