일련의 레코드를 인쇄할 때 정렬

일련의 레코드를 인쇄할 때 정렬

테이블이 오른쪽으로 이동하는 문제를 해결하는 방법 난 그냥 아래 에 표시 되기를 원합니다 1.

이것은 START가 추가된 내 스크립트입니다. 이제 정렬이 불안정해졌습니다.

while IFS="," read f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12
do
 printf "START %10s %10s %10s %10s %10s %10s %10s %10s %10s %10s %10s %5s" $f1 $f2 $f3 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12; # ifet the student id
done < records.csv
echo " Press <enter> to return to main menu"
read null

여기에 이미지 설명을 입력하세요.

답변1

다음과 같이 printf 문 끝에 개행 문자를 추가해야 합니다.

             printf "START %10s %10s %10s %10s %10s %10s %10s %10s %10s %10s %10s %5s\n" $f1 $f2 $f3 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12; # ifet the student id

(알아채다 \n)

답변2

HARRY1이는 네 번째 필드에 5개의 위치만 제공했지만 예제 와 같이 6개의 문자를 포함할 수 있기 때문일 수 있습니다 .

printf "%10s %10s %10s %5s <...>
                       ^^^ 

그러나 GNU/Linux에는 좋은 미화 도구가 있습니다.column들어오는 데이터를 기반으로 열 너비를 자동으로 선택합니다.

$ cat test.csv
Harry,2
Ed,3
Mary,4
Looooooooongname,8

$ sed 's/,/ /' test.csv | column -t
Harry             2
Ed                3
Mary              4
Looooooooongname  8

$ sed 's/,/ /' test.csv | grep -v Looooooooongname | column -t
Harry  2
Ed     3
Mary   4

어쩌면 이것이 당신에게 더 나은 선택일까요?

관련 정보