Как конвертировать awk скрипт в sh скрипт

Есть простенький скрипт для подсчета среднего значения в колонке:

cat /home/data/hotels.csv | awk -F, '{sum+=$18} END {print sum/NR}'

Я хочу создать файл process.sh, чтобы он делал то же, самое, и принимал файл с датасетом в качестве аргумента:

./process.sh /home/data/hotels.csv

Как это можно сделать?


Ответы (2 шт):

Автор решения: ipatev_nn

Скрипт process.sh:

#!/bin/bash
awk -F, '{sum+=$18} END {print sum/NR}' "${1:?Не передано имя файла}"

запуск

./process.sh /home/data/hotels.csv

Переводить из awk в shell, думаю смысла в данном случае нет

→ Ссылка
Автор решения: Ivan

Переделывать awk в sh не стоит, sh медленнее и не поддерживает дробные числа, которые будут появляться при вычислении среднего значения. Либо оберните awk в баш скрипт, как рекомендовал user341547, либо создайте awk скрипт.

#!/usr/bin/awk -f
BEGIN {
    FS = ","
}

sum+=$18{}

END {
    print sum/NR
}

запуск

./process.awk /home/data/hotels.csv
→ Ссылка