РЕДАКТИРОВАТЬ: Добавление решения, которое удаляет контрольные символы M из файла Input_file, если OP имеет его в своем файле Input_file. Это обеспечит вывод в порядке сортировки, для которого требуется GNU awk
. Используется PROCINFO["sorted_in"] = "@val_num_asc"
функция GNU awk
.
awk '
/^[a-zA-Z]+/{
next
}
!a[$2]++{
b[++count]=$2
}
!e[$1]++{
c[++count1]=$1
}
{
d[$1,$2]=$NF
}
END{
for(k=1;k<=count;k++){
header=(k==1?"Value":header)OFS b[k]
}
print header
PROCINFO["sorted_in"] = "@val_num_asc"
for(j in c){
for(i=1;i<=count;i++){
if(i==1){
printf("%d ",c[j]/100)
}
printf("%d %s",d[c[j],b[i]],i==count?ORS:OFS)
}
}
}
' Input_file | column -t
Вывод будет следующим.
Value D E B R U X
0 20 170 0 0 0 0
0 39427 2817 9 8 375 1
1 17 199 0 0 0 0
5 0 183 0 0 0 0
10 0 109 0 0 0 0
15 0 3 0 0 0 0
20 0 2 0 0 0 0
25 0 19 0 0 0 0
50 27058176 63687206 197246 610821 6157692 136
75 4108 77 0 0 0 0
100 116 1365810 37 61 353829 10
150 7093493 11483592 98433 326 3510 10
200 11 26 0 0 0 0
250 2067757 1909744 622912 26202 254114 15
400 10 27 3 0 0 0
500 281 739597 902 2249 68466 10
750 3 36 2 0 0 0
1000 6750 46162 2263 186 408 11
1500 13 14 3 0 0 0
2500 24 58952 63000 29 58 10
5000 8338 514 177 0 7 10
Не могли бы вы попробовать следующее. Но не уверен, почему последняя строка 100000
отсутствует в выводе OP. Если вас не волнует последовательность данных.
awk '
/^[a-zA-Z]/{
next
}
!a[$2]++{
b[++count]=$2
}
!e[$1]++{
c[++count1]=$1
}
{
d[$1,$2]=$NF
}
END{
for(k=1;k<=count;k++){
header=(k==1?"Value":header)OFS b[k]
}
print header
for(j in c){
for(i=1;i<=count;i++){
if(i==1){
printf("%d ",c[j]/100)
}
printf("%d %s",d[c[j],b[i]],i==count?ORS:OFS)
}
}
}
' Input_file | column -t