コマンドの出力があります。
CPU_SrcID#0_MC#0_Chan#0_DIMM#0 0 0 A1
CPU_SrcID#0_MC#0_Chan#1_DIMM#0 0 0 A2
CPU_SrcID#0_MC#0_Chan#2_DIMM#0 0 0 A3
CPU_SrcID#0_MC#1_Chan#0_DIMM#0 0 0 A4
CPU_SrcID#0_MC#1_Chan#1_DIMM#0 0 0 A5
CPU_SrcID#0_MC#1_Chan#2_DIMM#0 0 1 A6
CPU_SrcID#1_MC#0_Chan#0_DIMM#0 0 0 B1
CPU_SrcID#1_MC#0_Chan#1_DIMM#0 0 0 B2
CPU_SrcID#1_MC#0_Chan#2_DIMM#0 0 0 B3
CPU_SrcID#1_MC#1_Chan#0_DIMM#0 0 0 B4
CPU_SrcID#1_MC#1_Chan#1_DIMM#0 0 0 B5
CPU_SrcID#1_MC#1_Chan#2_DIMM#0 0 0 B6
だから私のすべての列はまっすぐです。変更される唯一の数字は、2列と3列の数字です。ただし、数字の1つが小数点以下の2桁以上に変更されると、3番目の列が残りの列と一致しなくなります。
CPU_SrcID#0_MC#0_Chan#0_DIMM#0 0 0 A1
CPU_SrcID#0_MC#0_Chan#1_DIMM#0 15 0 A2
CPU_SrcID#0_MC#0_Chan#2_DIMM#0 0 0 A3
CPU_SrcID#0_MC#1_Chan#0_DIMM#0 0 0 A4
CPU_SrcID#0_MC#1_Chan#1_DIMM#0 0 0 A5
CPU_SrcID#0_MC#1_Chan#2_DIMM#0 0 347 A6
CPU_SrcID#1_MC#0_Chan#0_DIMM#0 0 0 B1
CPU_SrcID#1_MC#0_Chan#1_DIMM#0 0 0 B2
CPU_SrcID#1_MC#0_Chan#2_DIMM#0 0 0 B3
CPU_SrcID#1_MC#1_Chan#0_DIMM#0 0 0 B4
CPU_SrcID#1_MC#1_Chan#1_DIMM#0 0 0 B5
CPU_SrcID#1_MC#1_Chan#2_DIMM#0 0 0 B6
数字の小数点以下の桁数に関係なく、どのように列を正確に維持できますか?これが私が望む方法です。
CPU_SrcID#0_MC#0_Chan#0_DIMM#0 0 0 A1
CPU_SrcID#0_MC#0_Chan#1_DIMM#0 15 0 A2
CPU_SrcID#0_MC#0_Chan#2_DIMM#0 0 0 A3
CPU_SrcID#0_MC#1_Chan#0_DIMM#0 0 0 A4
CPU_SrcID#0_MC#1_Chan#1_DIMM#0 0 0 A5
CPU_SrcID#0_MC#1_Chan#2_DIMM#0 0 347 A6
CPU_SrcID#1_MC#0_Chan#0_DIMM#0 0 0 B1
CPU_SrcID#1_MC#0_Chan#1_DIMM#0 0 0 B2
CPU_SrcID#1_MC#0_Chan#2_DIMM#0 0 0 B3
CPU_SrcID#1_MC#1_Chan#0_DIMM#0 0 0 B4
CPU_SrcID#1_MC#1_Chan#1_DIMM#0 0 0 B5
CPU_SrcID#1_MC#1_Chan#2_DIMM#0 0 0 B6
ベストアンサー1
コードを修正できない場合生産する書式を設定すると、最初からソートされた列を含むデータが生成され、その後このcolumn
ユーティリティを使用して出力を後処理できます。
some_command | column -t
質問で誤ってソートされたデータを実行すると、column -t
次の出力が生成されます。
CPU_SrcID#0_MC#0_Chan#0_DIMM#0 0 0 A1
CPU_SrcID#0_MC#0_Chan#1_DIMM#0 15 0 A2
CPU_SrcID#0_MC#0_Chan#2_DIMM#0 0 0 A3
CPU_SrcID#0_MC#1_Chan#0_DIMM#0 0 0 A4
CPU_SrcID#0_MC#1_Chan#1_DIMM#0 0 0 A5
CPU_SrcID#0_MC#1_Chan#2_DIMM#0 0 347 A6
CPU_SrcID#1_MC#0_Chan#0_DIMM#0 0 0 B1
CPU_SrcID#1_MC#0_Chan#1_DIMM#0 0 0 B2
CPU_SrcID#1_MC#0_Chan#2_DIMM#0 0 0 B3
CPU_SrcID#1_MC#1_Chan#0_DIMM#0 0 0 B4
CPU_SrcID#1_MC#1_Chan#1_DIMM#0 0 0 B5
CPU_SrcID#1_MC#1_Chan#2_DIMM#0 0 0 B6
この動作の1つの可能な欠点は、列間column -t
の最小距離が2つの空間に減少することである。
以下のソートされていないデータに示すように、データと共にソート文字(フィールド区切り文字)を出力してこの問題を「修正」することもできます。
CPU_SrcID#0_MC#0_Chan#0_DIMM#0 |0 |0 |A1
CPU_SrcID#0_MC#0_Chan#1_DIMM#0 |15 |0 |A2
CPU_SrcID#0_MC#0_Chan#2_DIMM#0 |0 |0 |A3
CPU_SrcID#0_MC#1_Chan#0_DIMM#0 |0 |0 |A4
CPU_SrcID#0_MC#1_Chan#1_DIMM#0 |0 |0 |A5
CPU_SrcID#0_MC#1_Chan#2_DIMM#0 |0 |347 |A6
CPU_SrcID#1_MC#0_Chan#0_DIMM#0 |0 |0 |B1
CPU_SrcID#1_MC#0_Chan#1_DIMM#0 |0 |0 |B2
CPU_SrcID#1_MC#0_Chan#2_DIMM#0 |0 |0 |B3
CPU_SrcID#1_MC#1_Chan#0_DIMM#0 |0 |0 |B4
CPU_SrcID#1_MC#1_Chan#1_DIMM#0 |0 |0 |B5
CPU_SrcID#1_MC#1_Chan#2_DIMM#0 |0 |0 |B6
このデータを使用すると、column -t -s '|'
次の結果が得られます。
CPU_SrcID#0_MC#0_Chan#0_DIMM#0 0 0 A1
CPU_SrcID#0_MC#0_Chan#1_DIMM#0 15 0 A2
CPU_SrcID#0_MC#0_Chan#2_DIMM#0 0 0 A3
CPU_SrcID#0_MC#1_Chan#0_DIMM#0 0 0 A4
CPU_SrcID#0_MC#1_Chan#1_DIMM#0 0 0 A5
CPU_SrcID#0_MC#1_Chan#2_DIMM#0 0 347 A6
CPU_SrcID#1_MC#0_Chan#0_DIMM#0 0 0 B1
CPU_SrcID#1_MC#0_Chan#1_DIMM#0 0 0 B2
CPU_SrcID#1_MC#0_Chan#2_DIMM#0 0 0 B3
CPU_SrcID#1_MC#1_Chan#0_DIMM#0 0 0 B4
CPU_SrcID#1_MC#1_Chan#1_DIMM#0 0 0 B5
CPU_SrcID#1_MC#1_Chan#2_DIMM#0 0 0 B6