2017-05-02 11 views
0

さまざまな要素数のレコードを印刷するか、またはギザギザの配列などのレコードを印刷します。要素の型は%sの後に不定数の%dが続きます。Awk:さまざまな要素数の書式付き印刷

例の入力、擬似コード、所望の出力:反復形式サブ文字列を指定する方法

$ echo "abc 1 2 3 4 5 
    def 8 9 
    sometext 5000 23 4 34 56 112" | 
awk '{printf "% 10s % 5d % 5d*.......", <each element>' 
$  abc  1  2  3  4  5 
     def  8  9 
    sometext 5000 23  4 34 56 112 

% 5d*.......

<each element>各要素の宣言方法は?

Cのvprintfに相当する(g)awkがありますか、またはprintf "%s *%d" el for el in arrayと言っていますが、%d指定子が自動的に正しい回数繰り返されます。

私は驚くべきことをGoogleで見つけられません。私はきれいにフォーマットされた方法でギザギザの配列を印刷する最初の人だとは想像できません。

+0

[編集] [MCVE]示す簡潔な、テスト可能なサンプル入力と期待される出力を含むようにあなたの質問。 See [ask]。 –

+0

@EdMortonの例と望ましい出力が追加されました。 –

答えて

1
echo "abc 1 2 3 4 5 
    def 8 9 
    sometext 5000 23 4 34 56 112" | 
awk '{printf "%10s", $1 OFS; 
     for(i=2;i<=NF;i++) printf "%5d", $i OFS; 
     print ""}' 



     abc  1 2 3 4 5 
     def  8 9 
sometext 5000 23 4 34 56 112 
0
$ echo "abc 1 2 3 4 5 
    def 8 9 
    sometext 5000 23 4 34 56 112" | 
awk '{printf "%10s", $1; for (i=2;i<=NF;i++) printf "%s%5d", OFS, $i; print ""}' 
     abc  1  2  3  4  5 
     def  8  9 
    sometext 5000 23  4 34 56 112