По сути, вы запрашиваете таблицу непредвиденных обстоятельств (также известную как перекрестная таблица или перекрестная таблица ). Например, с GNU datamash
datamash -sW crosstab 2,1 unique 3 < file
1 2 4
1 23, 8, 6,
2 0, 18, 18,
3 38, 0, 10,
4 34, 22, 22,
. Если вы хотите удалить конечные запятые из ваших данных, простой вариант будет tr
tr -d , < file | datamash -sW crosstab 2,1 unique 3
1 2 4
1 23 8 6
2 0 18 18
3 38 0 10
4 34 22 22
. Если вы хотите добавить столбец «отсутствует», вам необходимо указать данные-заполнители - либо
{ tr -d , < file ; printf '3 %d -\n' {1..4} ; } |
datamash -sW crosstab 2,1 unique 3
1 2 3 4
1 23 8 - 6
2 0 18 - 18
3 38 0 - 10
4 34 22 - 22
, либо только одну точку и пусть datamash
заполнит остальные
{ tr -d , < file ; printf '3 1 -\n' ; } |
datamash --no-strict --filler=- -sW crosstab 2,1 unique 3
1 2 3 4
1 23 8 - 6
2 0 18 - 18
3 38 0 - 10
4 34 22 - 22