Совокупные средние значения одного столбца

Если разделителем всегда является один символ (поэтому два или более последовательных разделителя обозначают пустые поля), вы можете указать только первую строку из входного файла, посчитать разделители ( n разделители означают, что количество полей равно n + 1 ), затем используйте cut для печати от 1 -го поля до n ое поле (предпоследнее), например с вводом, разделенным табуляцией:

n=$(head -n 1 infile | tr -dc \\t | tr \\t \\n | wc -l)
cut -f1-$n infile > outfile

или, например, с файлом csv :

n=$(head -n 1 infile | tr -dc , | tr , \\n | wc -l)
cut -d, -f1-$n infile > outfile

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

0
20.02.2018, 13:21
1 ответ

Solución rápidaAwk:

awk '{ sum += $1; print sum/NR }' file
6
28.01.2020, 02:15

Теги

Похожие вопросы