Это медленно, но это действительно имеет один плюс. Это поддерживает ширину разделителей полей, когда они более широки, чем отдельный символ. FWIW: Если Вы запускаете этот скрипт дважды, результат идентичен оригиналу.
Вот сценарий.
awk '{ eix = length($0)
for( fn=NF; fn>0; fn--) { dix=eix
while( substr($0,dix,1) ~ /[ \t]/ ) dix--
printf "%s%s", substr($0,dix+1,eix-dix), $fn
dix-=length($fn); eix=dix }
print substr($0,1,dix)
}' "$file"
Вот сравнения некоторого времени. Тестовый файл содержал 1 строку.
fields fields
10,0000 10,000,000
user11136 {python} | real 0.029s real 3.235s
reversible? no | user 0.032s user 2.008s
| sys 0.000s sys 1.228s
jmp {python} | real 0.078s real 5.045s
reversible? no | user 0.068s user 4.268s
| sys 0.012s sys 0.560s
rush {awk} | real 0.120s real 10.889s
reversible? no | user 0.116s user 8.641s
| sys 0.008s sys 2.252s
petero {awk} | real 0.319s real 35.750s
reversible? yes | user 0.304s user 33.090s
| sys 0.016s sys 2.660s
Если я понимаю Вашу логику правильно, как насчет этого:
while true; do
highest_cpu="$(ps -eo %C --sort -%cpu | awk 'NR==2 {print $1}')"
if [ "$highest_cpu" -gt 8 ]; then
notify-send 'CPU alert!' "$highest_cpu"
...
fi
...
done
При необходимости в нецелом числе порог использования ЦП следующее решение только для Bash должно работать:
if [[ "$highest_cpu" > 9.3 ]];then
...
if [ "$highest_cpu" -gt 8 ]; then
требует целого числа? – 21.11.2013, 18:19head -2
является ненужным. – Joseph R. 21.11.2013, 18:38