zoukankan      html  css  js  c++  java
  • Linux常用基本命令:三剑客命令之-awk格式化动作

    我们之前说过,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语言一样,用转义字符 ,输出换行

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

     小结:

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

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

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

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

    ghostwu@dev:~/linux/awk$ awk '{printf "第一列: %s  第二列: %s 第三列: %s
    ", $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	 %s	 %s
    ", $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	 %10s	 %10s
    ", "姓名", "年龄", "性别"}  {printf "%10s	 %10s	 %10s
    ", $1, $2, $3 }' ghostwu.txt
            姓名             年龄             性别
       ghostwu             20            man
      zhangsan             22          woman
          lisi             23          woman
    ghostwu@dev:~/linux/awk$ awk -v FS="-" 'BEGIN{printf "%-10s	 %-10s	 %-10s
    ", "姓名", "年龄", "性别"}  {printf "%-10s	 %-10s	 %-10s
    ", $1, $2, $3 }' ghostwu.txt
    姓名             年龄             性别        
    ghostwu        20             man       
    zhangsan       22             woman     
    lisi           23             woman   
  • 相关阅读:
    BZOJ 1027: [JSOI2007]合金 (计算几何+Floyd求最小环)
    BZOJ 4522: [Cqoi2016]密钥破解 (Pollard-Rho板题)
    BZOJ 4802: 欧拉函数 (Pollard-Rho)
    BZOJ 3944: Sum (杜教筛)
    BZOJ 3309: DZY Loves Math (莫比乌斯反演)
    BZOJ 2599: [IOI2011]Race(点分治板题)
    BZOJ 3680: 吊打XXX // Luogu [JSOI2004]平衡点 / 吊打XXX (模拟退火)
    Luogu P3690【模板】Link Cut Tree (LCT板题)
    [HNOI2007]最小矩形覆盖
    [SCOI2007]最大土地面积
  • 原文地址:https://www.cnblogs.com/ghostwu/p/9091060.html
Copyright © 2011-2022 走看看