linux之awk命令格式化输出(printf)使⽤技巧
linux之awk命令格式化输出(printf)使⽤技巧
在使⽤awk命令的过程中输出的每⼀列总是对不齐,看着很乱,如下:
# awk -F ":" '/sbin:/{print $1,$4,$5,$7}' /etc/passwd
daemon 2 daemon /sbin/nologin
sync 0 sync /bin/sync
shutdown 0 shutdown /sbin/shutdown
halt 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
# 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
sync                0                  sync                /bin/sync
shutdown            0                  shutdown            /sbin/shutdown
halt                0                  halt                /sbin/halt
先通过BEGIN{}模式输出表头,然后后⾯通过printf输出表内容:
%-20s :通常我们⽤的是%s来代替⼀个字符串,这⾥-20表⽰占位20个字节,负号表⽰左对齐,正号表⽰右对齐
\n:换⾏符表⽰输出完本⾏以后换⾏,直接使⽤print则会默认换⾏,不需要⼿⼯添加printf怎么输出字符
我们使⽤了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
# 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/pas swd
⽤户名字段1                字段2                  权限
user:daemon              2                  daemon              /sbin/nologin
user:sync                0                  sync                /bin/sync
user:shutdown            0                  shutdown            /sbin/shutdown
user:halt                0                  halt                /sbin/halt

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。