Я понял, как получить среднее файл, который содержит номера во всех линиях, таких как:AWK: Как печатать средние числа последовательных номеров в файле, но пропускать алфавитные символы/строки?
Numbers.txt
1
2
4
8
Выход:
Average: 3.75
Это код, который я использую для этого:
awk '{ sum += $1; tot++ } END { print sum/tot; }' Numbers.txt
Однако проблема заключается в том, что это не учитывает возможные строки, которые могут быть в файле. Например, файл, который выглядит следующим образом:
NumbersAndExtras.txt
1
2
4
8
Hello
4
5
6
Cat
Dog
2
4
3
Для такого файла я хочу, чтобы напечатать несколько средних значений последовательных чисел, не обращая внимания на такие строки, что результат выглядит примерно так:
Выход:
Average: 3.75
Average: 5
Average: 3
я мог придумать какой-то сложный код, может сделать это с помощью переменных и «if» операторов и циклов и еще много чего, но мне сказали, что это проще, чем при некоторых функциях awk. Я хотел бы знать, как это может выглядеть, а также объяснение того, почему это работает.
существовала ли пустая строка в вашем входе? – cuonglm
Я не принимал пустые строки во внимание, только строки, но я полагаю, что я тоже должен искать это. – user3624649
Если ответ решает вашу проблему, пожалуйста, примите его, нажав на большую галочку (✓) рядом с ней. Если вы нашли другие ответы полезными, попробуйте их проголосовать. Ответы и ответы на голосование помогают не только тем, кто ответил, но и будущим читателям. См. [Соответствующую статью справочного центра] (http://stackoverflow.com/help/someone-answers). Если ваш вопрос еще не полностью ответил, пожалуйста, сообщите об этом. – mklement0