标签:动作 字符 cat class bsp nbsp linux $1 文本
我们之前说过,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
标签:动作 字符 cat class bsp nbsp linux $1 文本
原文地址:https://www.cnblogs.com/ghostwu/p/9091060.html