сортировка студентов по оценкам

При использовании опции -aпрограмма mailxвыполнит все необходимые преобразования в формат base64, а затем в формат MIME. Нет необходимости использоватьuuencode

echo | mailx -a actual_file testemail@org.com

Единственная хитрость в том, что по какой-то причине mailxне работает, если поставить -a actual_fileпосле адреса электронной почты получателя.

Обратите внимание, что использование команды echoгарантирует, что mailxне будет запрашивать ввод темы и текста сообщения вручную.

п.с. отвечая на ваш комментарий... Насколько я знаю, в программе mailxнет такой опции для предоставления другого отображаемого имени. Чтобы прикрепить файл так, чтобы он отображался под другим именем в электронной -почте, вы можете сделать

ln -s actual_file attached_file
echo | mailx -a attached_file testemail@org.com
rm -f attached_file
0
15.01.2020, 09:37
2 ответа

Небольшое редактирование от Петра: я заменил $3 на $NF, это последнее поле

awk '{if ($NF + 0 < 60 || $NF == 69 || $NF == 79 || $NF == 89)print $NF,$0}' file.txt | sort -n | cut -f2- -d' '

$NF — это последнее поле в awk, которое печатается с печатью в первом поле, поэтому утилита сортировки может сортировать его в числовом виде (имейте в виду, что сортировка выполняется в порядке возрастания, который вы можете изменить на порядок убывания добавив дополнительный флаг для сортировки, который равен -r ), также печатается вся строка/запись/строки или как вы это называете из-за $0. Последняя часть использует cut для вырезания первого поля/столбца с использованием разделителя пробелов. Если вы удалите последнюю трубу, которая используется для резки, вы увидите результат. Этот код может быть не таким надежным, как можно было бы ожидать, но вы можете использовать его в качестве справки. Я не утверждаю, что он идеален.

1
28.01.2020, 02:38

В заголовке вы упомянули сортировку, так что давайте начнем с этой части. В GNU/Linux имеется большое количество основных утилит , которые позволяют вам, среди прочего, работать с файлами данных, разделенных пробелами. Таким образом, вы можете сортировать численно(-n)в соответствии с третьим столбцом(-k 3)с:

sort -n -k 3 students_marks

Другим замечательным инструментом является AWK . Он читает файл построчно и выполняет некоторые операторы. В вашем случае вы можете использовать:

awk '{ if ($3 + 0 < 60 || $3 == 69 || $3 == 79 || $3 == 89) print; }' student_marks

в командной строке. Он не может (вернее громоздко )отсортировать результат, но можно связать вывод одной команды с вводом другой с помощью пайпа|:

#!/bin/bash
awk '{ if ($3 + 0 < 60 || $3 == 69 || $3 == 79 || $3 == 89) print; }' $1 |
sort -n -k 3

При запуске скрипта последний $1будет заменен аргументом, который вы указали в командной строке.

0
28.01.2020, 02:38

Теги

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