При использовании опции -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
Небольшое редактирование от Петра: я заменил $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 для вырезания первого поля/столбца с использованием разделителя пробелов. Если вы удалите последнюю трубу, которая используется для резки, вы увидите результат. Этот код может быть не таким надежным, как можно было бы ожидать, но вы можете использовать его в качестве справки. Я не утверждаю, что он идеален.
В заголовке вы упомянули сортировку, так что давайте начнем с этой части. В 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
будет заменен аргументом, который вы указали в командной строке.