Intereting Posts
xmodmap shift + keycode для создания keyym Ubuntu на macbook не загружается с USB Отменить или изменить по умолчанию «повторное обнаружение мониторов» windows + p cinnamon keybinding с использованием gsettings pem file difference – ssh-keygen vs openssl Инструмент для просмотра последних версий программного обеспечения от восходящего потока? Рекомендации по использованию видеокарты Dell PowerEdge R210 и CentOS 6.5 pkill не убивает процессы, предшествующие непосредственным потомкам процесса Почему я не могу изменить разрешение на символическую ссылку на Mac? UPCapture часть окна Счетчик ошибок с высоким RX-пакетом с модемом – как анализировать? Шифрование мультимедийных файлов с помощью GPG Linux Slackware (Broken – паника ядра) Как получить удобочитаемое значение (например, RGB) от `\ e] 11;? \ A`? Архив для корневой файловой системы с быстрым произвольным доступом Можно ли отключить права доступа к файлу файловой системы ext3 или ext4?

Как использовать масштаб в awk?

У меня есть текст. Он состоит из 3 столбцов:

1. student number 2. midterm grade 3. final grade variable=$(cat $1 | awk 'NR=='$j' {print (($2+$3)/2)}' ) 

Как я могу сделать результат после 3-х цифр:

 Example: 123123 50 55 result: 52.500 

После того, как я хочу проверить каждый результат, он больше 50 или нет.

Я предлагаю:

 awk '{ printf("%.3f\n", ($2+$3)/2 ) }' example.txt 

Выход: 52.500

Если вы хотите совместить оценки более 50 вы бы сделали что-то вроде:

 awk '{sum=($2+$3)/2 ; split(sum,a,"."); if(a[1] > 50) printf("%.3f\n", sum)}' grades 

Сохраните результат в переменной sum . Используйте функцию split для соответствия первой части перед . точка и напечатать результат

Если вы хотите напечатать номер студента, вы должны изменить строку printf следующим образом:

printf("Student: %s\t%.3f\n", $1, sum)