Используя ответ gue и Bob Eager, я понял, что следующий параметр в /etc/postfix/main.cf
также работает (на машине с Ubuntu 18.04):
# appending.domain is the MUA's job.
# append_dot_mydomain = no # --> this is the default setting
append_dot_mydomain = yes # --> Setting it to yes appends the domain to the hostname
Это также объясняет, что Гью сказал :добавление.domain — это работа почтового агента пользователя. Установив его на yes
, мы отменяем это.
Итак, моя установка:
[/etc/postfix/main.cf]
...
append_dot_mydomain = yes
...
myorigin = /etc/mailname
...
[/etc/mailname]
mydomain.example.com
Тем не менее, это не похоже на правильный путь; в конце концов, установив для него значение yes
, мы нарушаем принцип, согласно которому «добавление.domain — это работа почтового агента»
Кроме того, я не уверен, почему мне нужно настроить его таким образом, чтобы он работал. У меня есть другой сервер (, настроенный кем-то другим; машина Debian 8.11 ), которая правильно добавляет домен после имени хоста, даже если /etc/mailname
установлен на домен, и с append_dot_mydomain=no
. И на этом сервере он работает как для mailx
, так и для писем, отправленных, например. проверка журнала
Используйте:
awk -F'( )' '{ $1=toupper($1) }1' infile
использование разделителя полей в режиме регулярных выражений и одиночного пробела, которые мы определили с помощью -F'( )'
, заключается в том, чтобы сохранить отступ между полями и сохранить внешний вид вывода таким, какой он есть на входе. Если вам не нравится красивый вывод, просто удалите его..
Пробовал использовать команду GNU sed
, все работает нормально
sed "s/^[a-zA-Z]*/\U&/1" p.txt
выход
ORANGE 5 300 Florida
BANANA 7 500 California
APPLE 3 600 Maryland
GRAPE 14 50 New Mexico
MANGO 30 1 Florida
TOMATO 45 100 California
MELON 22 600 Texas
LEMON 19 400 Florida
Питон
#!/usr/bin/python
import os
import re
k=open('filename','r')
for i in k:
o=i.split(' ')
b=o[0].islower()
if (b is True ):
up=o[0].upper()
o[0]=up
print " ".join(o).strip()
выход
ORANGE 5 300 Florida
BANANA 7 500 California
APPLE 3 600 Maryland
GRAPE 14 50 New Mexico
MANGO 30 1 Florida
TOMATO 45 100 California
MELON 22 600 Texas
LEMON 19 400 Florida
Сperl
:
perl -pe 's/\S+/\U$&/' < input.txt > output.txt
Это приведет к преобразованию в верхний регистр первой последовательности не -пробельных символов в каждой строке.
Если ввод содержит символы, отличные от -ASCII, и закодирован в UTF -8, добавьте параметр -CS
. Если он закодирован в соответствии с кодировкой вашей локали, вместо этого добавьте -Mopen=locale
.
Если ваш ввод имеет столбцы с фиксированной шириной (по количеству символов ), вы можете использовать GNU awk
и его FIELDWIDTHS
способ указания столбцов:
gawk -v FIELDWIDTHS='8 4 4 *' -v OFS= '{$1 = toupper($1); print}'
Что фактически преобразует в верхний регистр первые 8 символов каждой строки. Что вы также можете сделать с:
awk '{print toupper(substr($0, 1, 8)) substr($0, 9)}'
(gawk
и POSIX-совместимые реализации awk
предполагают, что ввод представляет собой текст, закодированный в соответствии с кодировкой локали ).