Выравнивание при печати серии записей

Как я могу решить проблему с таблицами, идущими вправо. Я просто хочу, чтобы его показывали под 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 

введите описание изображения здесь

2 Solutions collect form web for “Выравнивание при печати серии записей”

Вам нужно добавить новую строку в конце инструкции 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 )

Вероятно, это потому, что вы даете только 5 позиций для 4-го поля, но у вас может быть шесть символов, таких как HARRY1 в вашем примере:

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

Однако в столбце GNU / Linux есть хороший префикс, который автоматически выбирает ширину столбца в зависимости от входящих данных:

 $ 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 

Может быть, это лучший выбор для вас?

Linux и Unix - лучшая ОС в мире.