DSBL УДАЛСЯ DSBL УДАЛЕН и вряд ли вернется. Удалите его из конфигурации вашего почтового сервера.
Вы можете сделать это в sed
следующим образом:
sed -n '/^80:82:87/ { s/;//g; y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/; p }'
-n
указывает sed
не печатать входные данные
, кроме когда это специально указано для этого. / ^ 80: 82: 87 /
сказано, что команды внутри фигурных скобок {…}
должны выполняться только в строках, начинающихся с 80:82:87
.
Это дает вам те же функции, что и grep
.
Никогда не нужно перенаправлять grep
в sed
или awk
. s /; // g
удаляет все точки с запятой в строке,
как вы сказали, что хотите.
Если вы имели в виду двоеточия, просто измените его на s /: // g
. y
преобразует все строчные (латинские / ASCII) буквы в прописные.
Если вам нужно только преобразовать MAC-адреса (и / или другие шестнадцатеричные значения),
вы можете обойтись с помощью y / abcdef / ABCDEF /
. @jasonwryan подтолкнул меня к пониманию того, что громоздкую команду y
можно заменить на s / [[: lower:]] / \ U & / g
, s / [[: alpha:]] / \ U & / g
,
или даже s /.*/ \ U & /
- но только если вы используя GNU sed.
\ U
, похоже, не определен в POSIX.
tr
идеально подходит для таких простых операций:
echo '80:82:87:af:d2' | tr '[:lower:]' '[:upper:]' | tr -d ':'
Я игнорирую тот факт, что это может быть лучше сделано в PHP (поскольку это то, с чем вы работаете) с использованием функций PHP для обработки строк, возможно, с помощью чего-то вроде $ addr = strtoupper (str_replace (":", "", $ output))
. Вместо этого я сосредоточусь на решении оболочки для Unix.
Использование Awk:
awk 'BEGIN { RS=":"; ORS = "" } { print toupper }' <<<"$mac_address"
Тестирование:
$ mac_address="xx:yy:zz:k7:23:f0"
$ awk 'BEGIN { RS=":"; ORS = "" } { print toupper }' <<<"$mac_address"
XXYYZZK723F0
Программа Awk считывает каждую часть MAC-адреса как отдельную запись (в противном случае запись обычно представляет собой строку ввода) и распечатывает их без разделителя записей ( в противном случае разделителем выходной записи по умолчанию является новая строка). Перед печатью каждой записи он преобразует ее в верхний регистр.
Awk может выполнять сопоставление с образцом, верхний регистр и замену за один проход:
awk '/ ^ 80: 82: 87 / {gsub (/: /, ""); print toupper ($ 0)} '