2017-05-02 13 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가 있거나 이라고 말하면 % 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