1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > linux之awk命令格式化输出(printf)使用技巧

linux之awk命令格式化输出(printf)使用技巧

时间:2019-09-27 10:20:18

相关推荐

linux之awk命令格式化输出(printf)使用技巧

linux之awk命令格式化输出(printf)使用技巧

在使用awk命令的过程中输出的每一列总是对不齐,看着很乱,如下:

[root@linuxforliuhj ~]# awk -F ":" '/sbin:/{print $1,$4,$5,$7}' /etc/passwd daemon 2 daemon /sbin/nologinsync 0 sync /bin/syncshutdown 0 shutdown /sbin/shutdownhalt 0 halt /sbin/halt

如果我们想要输出的结果整齐的话则需要使用printf代替print输出,这里printf的语法与c语言基本相似

awk -F ":" 'BEGIN{print"用户名\t\t 字段1\t\t\t字段2\t\t\t权限"}/sbin:/{printf "%-20s%-20s%-20s%-20s\n", $1,$4,$5,$7}' /etc/passwd

[root@linuxforliuhj ~]# awk -F ":" 'BEGIN{print"用户名\t\t 字段1\t\t\t字段2\t\t\t权限"}/sbin:/{printf "%-20s%-20s%-20s%-20s\n", $1,$4,$5,$7}' /etc/passwd 用户名 字段1 字段2 权限daemon 2 daemon /sbin/nologin sync0 sync/bin/sync shutdown 0 shutdown /sbin/shutdownhalt0 halt/sbin/halt

先通过BEGIN{}模式输出表头,然后后面通过printf输出表内容:

%-20s:通常我们用的是%s来代替一个字符串,这里-20表示占位20个字节,负号表示左对齐,正号表示右对齐

\n:换行符表示输出完本行以后换行,直接使用print则会默认换行,不需要手工添加

我们使用了4个%s占位,所以后面需要有4个参数.

在此基础上还可以进行变化,例如

awk -F ":" 'BEGIN{print"用户名\t\t\t字段1\t\t 字段2\t\t 权限"}/sbin:/{printf "user:%-20s%-20s%-20s%-20s\n", $1,$4,$5,$7}' /etc/passwd

[root@linuxforliuhj ~]# awk -F ":" 'BEGIN{print"用户名\t\t\t字段1\t\t字段2\t\t权限"}/sbin:/{printf "user:%-20s%-20s%-20s%-20s\n", $1,$4,$5,$7}' /etc/passwd 用户名 字段1字段2 权限user:daemon 2 daemon /sbin/nologin user:sync0 sync/bin/sync user:shutdown 0 shutdown /sbin/shutdownuser:halt0 halt/sbin/halt

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。