Это проблема в Gnome. Это влияет на все программы, использующие libgtk -3.
См.https://gitlab.gnome.org/GNOME/gtk/issues/945
В настоящее время нет простого решения.
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
Должен ли он быть 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"
Трудный путь. Для 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
В первой части рассчитывается максимальная ширина каждого столбца и в соответствии с ней делается отступ при печати.