Linux_069_awk格式化输出

awk格式化:前面接触到的awk的输出功能,是{print}的功能,只能对文本简单的输出,并不能美化或修改格式
printf格式化输出:对文本格式化输出

printf和print的区别:format的使用

要点
1、其与print命令的最大不同是,printf需要指定format
2、format用于指定后面的每个item的输出格式
3、printf语句不会自动打印换行符;\n; print默认添加空格换行符

format格式的指示符都以%开头,后跟一个字符
%c 显示字符的ASCII码
%d, %i 十进制整数
%e, %E 科学计数法显示数值
%f 显示浮点数
%g, %G 以科学计数法的格式或浮点数的格式显示数值
%s 显示字符串
%u 无符号整数
%% 显示%自身

printf修饰符
- 左对齐;默认右对齐
+ 显示数值符号;printf "%+d"

给printf添加格式
格式化字符串%s代表字符串的意思
awk '{printf "%s\n",$1}' file

对对个变量进行格式化
当我们使用Linux命令printf时,一个%s格式替换符,可以对多个参数进行重复格式化
printf "%s\n" a b c d
然而awk的格式替换符想要修改多个变量,必须传入多个
awk 'BEGIN{printf "%d\n%d\n%d\n%d\n%d\n",1,2,3,4,5}'
注意awk不跟上文件数据,必须添加BEGIN, %d代表的是十进制数字

awk通过空格切割文档,printf动作对数据格式化输出
awk '{printf "第一列:%s 第二列:%s 第三列:%s\n",1,2,$3}' file

对pwd.txt进行格式化输出
awk -F ":" 'BEGIN{printf
"%-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %-25s\n",
"用户名","密码","UID","GID","用户注释","用户家目录","用户使用的解释器"}
{printf "%-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %s\n",
1,2,3,4,5,6,$7}'
pwd.txt

参数解释
'BEGIN{printf "格式替换符 格式替换符2","变量1","变量2"}' 执行BEGIN模式
"%-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %-25s\t %-25s\n" 先打印第一行信息
%s是格式替换符 ,替换字符串
%s\t 格式化字符串后,添加制表符,四个空格
%-25s 已然是格式化字符串, - 代表左对齐 ,25个字符长度

printf对输出的文本不会换行,必须添加对于的格式替换符和\n
使用printf动作,'{printf "%s\n",$1}',替换的格式和变量之间得有逗号
使用printf动作,%s %d 等格式化替换符,必须和被格式化的数据一一对应

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容