Использование awk/sed для перелистывания какого-то адреса электронной почты?

Согласно Краткому руководству , отредактируйте параметр interfaceв $PREFIX/etc/node.cfg. Полный список опций, которые вы можете изменить в этом файле, можно найти в документации плагина Node.

4
31.01.2020, 13:40
4 ответа
#sed -r -n 's/^([^@]+@)(.+)\.([a-z]{2,3})[\r\n\t ]{0,}$/\3.\2 \1\2.\3/gip'  <<< "email: petebll@josephay905s.changeip.com"

или

#sed -r -n 's/^([^@]+@)(.+)\.([a-z]{2,3})[\r\n\t ]{0,}$/\3.\2 \1\2.\3/gip' ./your file

upd :ИСПРАВЛЕНО ДЛЯ ПОДДЕРЖКИ ТРЕТЬЕГО ДОМЕНА

sed -r -n 's/^([^@]+@)([^\.]+)(\.[^\.]+){0,1}\.([a-z]{2,3})[\r\n\t ]{0,}$/\4\3.\2 \1\2\3.\4/gip'  <<< "email: vgnerov@yandex.ru"
result: ru.yandex email: vgnerov@yandex.ru

и

sed -r -n 's/^([^@]+@)([^\.]+)(\.[^\.]+){0,1}\.([a-z]{2,3})[\r\n\t ]{0,}$/\4\3.\2 \1\2\3.\4/gip'  <<< "email: petebll@josephay905s.changeip.com"
result: com.changeip.josephay905s email: petebll@josephay905s.changeip.com

Спасибо за комментарий @TERDON

3
28.04.2021, 23:24

Вы можете сделать этот perl, если настаиваете на том, чтобы сделать это одной строкой. По сути, флаг -F такой же, как и в awk, поэтому он разбивает каждую строку на символ @. Первая часть одной строки создает переменную с именем $s, которая имеет обратную часть домена. Вторая часть одной строки выводит перевернутый домен, за которым следует исходный ввод, который хранится в переменной $_.

perl -F'@ ' -lane '$s = join ".", reverse split/\./, $F[-1]; print "$s $_"'
5
28.04.2021, 23:24

Я прямо ответил на ваше требование: «сначала сортировать по домену », а не просто создавать дополнительный столбец в начале каждой строки, готовый к построчной сортировке:

sort -t@ -k2,3 -k1,2 file

Вывод для «большего набора данных»

email: post@b-monitor.ru
email: noelmrunyon@gmail.com
email: o9yp7@gmail.com
email: p.ri.me.grani.t2.01.9@gmail.com
email: philip@hugosinbox.xyz
email: petebll@josephay905s.changeip.com
email: pavelsib@meta.ua
email: p3ost51@moail.ru
email: nataliyarezvaya@rambler.ru
email: natalyasoborova1975@rambler.ru
email: novikova33novickova@yandex.ru
email: ontorsckyvladislav@yandex.ru
email: pedrika@yandex.ru
email: pjkraik@zfilm6.ru

Чтобы учесть измененное требование в вашем комментарии, где вы хотите, чтобы компоненты домена были сгруппированы вместе от «наиболее значимых» до «наименее значимых», попробуйте вместо этого

rev file | sort | rev

Пересмотренный вывод для «большего набора данных»

email: pavelsib@meta.ua
email: o9yp7@gmail.com
email: p.ri.me.grani.t2.01.9@gmail.com
email: noelmrunyon@gmail.com
email: petebll@josephay905s.changeip.com
email: pjkraik@zfilm6.ru
email: p3ost51@moail.ru
email: natalyasoborova1975@rambler.ru
email: nataliyarezvaya@rambler.ru
email: post@b-monitor.ru
email: pedrika@yandex.ru
email: novikova33novickova@yandex.ru
email: ontorsckyvladislav@yandex.ru
email: philip@hugosinbox.xyz
1
28.04.2021, 23:24

Если вы готовы использовать Python, код будет более читабельным:

Питон 2:

import sys
from string import split

for line in sys.stdin:
    line = line.rstrip()
    rev_domain = '.'.join(split(split(line, '@')[1], '.')[::-1])
    print rev_domain, line

Питон 3:

import sys

for line in sys.stdin:
    line = line.rstrip()
    rev_domain = '.'.join(line.split('@')[1].split('.')[::-1])
    print(rev_domain, line)
1
28.04.2021, 23:24

Теги

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