一連のレコードを印刷するときの並べ替え

一連のレコードを印刷するときの並べ替え

テーブルが右に移動する問題を解決する方法 私はちょうど下に表示されるようにしたい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これは、4番目のフィールドに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

たぶんこれはあなたにとって良い選択でしょうか?

関連情報