Как написать скрипт на awk, который показывает среднюю длину полей в каждой записи без учета пробелов?

У вас смешанный пакет от Trusty и Xenial

deb https://oss-binaries.phusionpassenger.com/apt/passenger xenial main
deb https://oss-binaries.phusionpassenger.com/apt/passenger xenial main

Сделайте резервную копию всех sources.list в разделе /etc/apt/sources.list.d/, затем сгенерируйте новый sources.list из генератора списков исходников Ubuntu , включая репозитории main, Restrictedи Universeс их обновлениями безопасности

. ]

Пакет nginx доступен в основном репозитории, вам не нужно добавлять новые исходники.

Затем запустите:

sudo apt-get update
sudo apt-get autoclean
sudo apt-get -f install
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get autoremove --purge nginx*
sudo apt-get install nginx

0
05.11.2019, 20:19
1 ответ

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

Таким образом, для средних значений на -запись:

NF > 0 {
    linesum = 0
    for (i = 1; i <= NF; i++) linesum += length($i)
    print "Average field length for record: " linesum / NF
}

и для всего файла:

{
    for (i = 1; i <= NF; i++) sum += length($i)
    count += NF
}

END { if (count > 0) { print "Average field length in file: " (sum / count) } }

Это также устраняет проблему с построчным вычислением средних значений.

В вашем примере это дает в среднем 4,17857 (с учетом пунктуации ).

1
28.01.2020, 02:39

Теги

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