Использование AWK для объединения уникальных строк на основе первого столбца - PullRequest
0 голосов
/ 22 июня 2019

Я пытаюсь написать сценарий AWK для суммирования данных в большом текстовом файле.Порядок получаемых данных важен, поэтому я не могу использовать сортировку.

Я пробовал разные варианты FNR == NR, но мне не повезло

Входной файл

Height 3.5
Weight 12.3
Age 23
: 
:
Height 4.5
Weight 15.5
Age 31
:
:

Ожидаемый результат

Height 3.5 4.5
Weight 12.3 15.5
Age 23 31

Ответы [ 3 ]

1 голос
/ 22 июня 2019
0 голосов
/ 23 июня 2019

Это не awk, но может работать для вас (GNU sed):

sed -E 'H;g;s/((\n\S+)[^\n]*)(.*)\2(.*)/\1\4\3/;h;$!d;x;s/.//' file 

Используйте место для удержания, чтобы собрать результаты для каждого ключа и в конце файла удалить введенную новую строку и распечатать результаты.

0 голосов
/ 22 июня 2019

Используя массив awk , вы можете сгруппировать значения.

Это упрощенная версия:.

BEGIN {
summary["Weight"] = "Weight";
...
}
{
summary[$1] = summary [$1] " " $2
}
END {
print summary["Weight"];
...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...