2016-04-19 13 views
0

を使用して、私は印刷フォーマットされた出力は、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クエリがある、次の出力を生成するためにawkを使用しました

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

は、それが0123を使用して、これを達成することが可能です。

awk 'whatever'|column -t 

答えて

2

で区切られた複数の入力フィールドで動作するはずです-サインでも、ユーザーIDを右揃えにすることができます。

1

awkソリューションは、あなたが削除する場合というのprintf

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

ノートを使用することになります。また、コードがcolumnにあなたのawkの結果をパイプしてみてください|

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] 
    } 
} 

は、上記の各フィールドの最大幅を計算し、確認するために、印刷するときにフィールドが適切に関係なく、入力ファイル(複数可)の内容の整列されていることを使用しています。

関連する問題