2016-04-19 76 views
0

我用awk产生以下输出打印格式的输出用awk

root | /root 
    bin | /bin 
    daemon | /sbin 
    adm | /var/adm 
    lp | /var/spool/lpd 

awk查询是如下

head -n 5 /etc/passwd | awk ' BEGIN{ FS=":";OFS=" | "; } { print $1 , $6 } ' 

欲被显示在格式化方式输出如下

root | /root 
    bin | /bin 
    daemon | /sbin 
    adm | /var/adm 
    lp  | /var/spool/lpd 

是否可以使用awk。此外,代码应该由|

回答

2

尝试分隔多个输入字段管道您的awk结果工作column

awk 'whatever'|column -t 
1

awk解决方案将用printf

awk -F: '{printf "%-15s | %s\n",$1,$6}' /etc/passwd 

请注意,如果您删除-签名你也可以对齐userids以及。

0
$ cat tst.awk 
BEGIN { FS=":"; OFS=" | " } 
FNR<=5 { 
    for (i=1;i<=NF;i++) { 
     wid[i] = (wid[i] > length($i) ? wid[i] : length($i)) 
     val[NR,i] = $i 
    } 
} 
END { 
    for (rowNr=1; rowNr<=NR; rowNr++) { 
     printf "%-*s | %-*s\n", wid[1], val[rowNr,1], wid[6], val[rowNr,6] 
    } 
} 

上述计算每个字段的最大宽度,然后使用该打印,以确保当字段正确排列,无论你的输入文件(县)的内容。