Команда или сценарий awk для расчета дневной и почасовой заработной платы сотрудников

Это проблема в Gnome. Это влияет на все программы, использующие libgtk -3.

См.https://gitlab.gnome.org/GNOME/gtk/issues/945

В настоящее время нет простого решения.

-5
13.11.2021, 01:06
3 ответа
awk '{$NF="$"$NF"/hr " "$"$NF*8"/day";print $0}' filename

выход

Adam Adamson Accounting $20.00/hr $160/day
Iver Iverson InfoTech $50.00/hr $400/day
Cary Caryson ChiefExecutive $200.00/hr $1600/day
Mary Maryson Maintenance $15.00/hr $120/day
Stan Stanson SalesDept. $10.00/hr $80/day
Scot Scotson SalesDept. $10.00/hr $80/day
Eric Ericson Executive $100.00/hr $800/day
Enid Enidson Executive $100.00/hr $800/day
Maye Mayeson Maintenance $15.00/hr $120/day
Axel Axelson Accounting $21.00/hr $168/day
Pete Peteson PayrollDept. $15.50/hr $124/day
Mick Mickson Marketing $12.00/hr $96/day
Iris Irisson InfoTech $55.00/hr $440/day
Hank Hankson HumanRes $42.42/hr $339.36/day
1
13.11.2021, 08:02

Должен ли он быть awk?

#!/bin/bash
while IFS='' read -r LinefromFile || [[ -n "${LinefromFile}" ]]; do
    a=($(echo "$LinefromFile"))
    printf "%-20s" $a[1] $a[2] $a[3] 
    printf "%-20s%.2f" $a[4] $((a[4] * 8))
    printf "\n"
done < "$1"


-2
13.11.2021, 03:10

Трудный путь. Для GNU awk используются только многомерные массивы. Формат столбцов сохраняется независимо от длины их содержимого (как при использовании утилиты column -t). Разделитель глобально определяется в переменной OFS :

.
awk -v pre="$" -v suf="/hr" '
        {hr+=$NF;
        for(i=1; i<=NF; i++) {
                row[NR][i]=$i
                l=length($i)
                if(l>len[i]) len[i]=l
                }
        }
END     {for(i in row){
                for(j in row[i])
                        printf("%-*s" OFS, (j==NF?4:0) + len[j],
                                j==NF? pre row[i][j] suf: row[i][j])
                print pre row[i][j] * 8 "/day"
                }
        print "\nworkers earned a combined $" hr " per hour"
        }
' OFS='\t' file

В первой части рассчитывается максимальная ширина каждого столбца и в соответствии с ней делается отступ при печати.

0
13.11.2021, 05:58

Теги

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