Как я умножаю и суммирую данные столбца с помощью awk и или sed?

-l означает "долго", т.е. это отображает долгие записи, не просто имена файлов. -r средства инвертируют порядок сортировки и -t вид средств ко времени (время изменения файла). -S вид размером. Так:

ls -lrt will sort by time reverse order
ls -lSr will sort by filesize in reverse order

для большего количества детали посмотрите man ls

2
20.02.2014, 00:50
2 ответа

При необходимости замените 6 на общее (количество строк + 1):

awk '{mult+=$2*(6-NR); sum+=$2;} END {print mult/sum;}' yourfile.txt 

Отображает: 3.06667

4
27.01.2020, 21:54
Если общее количество строк неизвестно[12193]пояснение [12194]awk 'FNR == NR{t=NR+1; next}[12195]FNR variable[11861] --> Номер текущей строки в текущем файле[12196]NR variable[11863]--> Общее количество просмотренных строк[12197]Условие [11864]FNR == NR[11865] может быть истинно только в том случае, если awk считывает первый файл аргумента[12198]t=NR+1[11867] -- > переменная [11868]t[11869] содержит дополнительный счетчик строк [11870]+1[11871], так как она необходима в нашем текущем контексте[12199]next[11873]--> Останавливает обработку текущей входной записи и переходит к следующей входной записи[12200]mult+=$2*(t-FNR)[11875] --> переменная [11876]mult[11877] содержит некоторый из [11878](5*(t-FNR) + . .... + 4*1 + 3*2 + 2*4 + 1*3)[12201]sum+=$2[11881] --> переменная [11882]sum[11883] содержит сумму столбца 2[12202]END[11885]--> После прочтения всего входного текста[12203]print mult/sum[11889] --> наконец-то будет выполнено правило END[11887] file{, }[11891] --> Вы также можете создать [11892]-файл[11893], но я использовал ярлык, который вы можете сказать, попробуйте [11894]-эхо-файл{,}[11895] и [11896]-эхо-файл{,,}[11897] на вашем терминале. [12205]Good Luck[12206]Akshay.
2
27.01.2020, 21:54

Теги

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