2016-04-19 77 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] 
    } 
} 

上述計算每個字段的最大寬度,然後使用該打印,以確保當字段正確排列,無論你的輸入文件(縣)的內容。