Artificial Intelligence
Please fill the required field.

Создайте текстовые файлы с литературным текстом, содержащим адреса электронной почты. Включите в них допустимые и не допустимые адреса. 15 Пример допустимых: ˆ [email protected] ˆ [email protected] («-» и «.» несколько раз, но не идут подряд) ˆ [email protected].


Для выполнения вашей задачи я создам несколько текстовых файлов с допустимыми и недопустимыми адресами электронной почты. Затем приведу пример команды `find`, используемой для поиска адресов электронной почты, обработки и вывода результатов в файл `base.txt`. ### Шаг 1: Создание текстовых файлов Создадим два текстовых файла: `valid_emails.txt` и `invalid_emails.txt`. **valid_emails.txt** ``` This email address is being protected from spambots. You need JavaScript enabled to view it. This email address is being protected from spambots. You need JavaScript enabled to view it. This email address is being protected from spambots. You need JavaScript enabled to view it. ( This email address is being protected from spambots. You need JavaScript enabled to view it. : This email address is being protected from spambots. You need JavaScript enabled to view it. This email address is being protected from spambots. You need JavaScript enabled to view it. ``` **invalid_emails.txt** ``` This email address is being protected from spambots. You need JavaScript enabled to view it. This email address is being protected from spambots. You need JavaScript enabled to view it. This email address is being protected from spambots. You need JavaScript enabled to view it. This email address is being protected from spambots. You need JavaScript enabled to view it. This email address is being protected from spambots. You need JavaScript enabled to view it. This email address is being protected from spambots. You need JavaScript enabled to view it. ``` ### Шаг 2: Пример команды find Теперь сформируем команду `find`, которая будет искать адреса электронной почты в текстовых файлах и обрабатывать их: ```bash find ~ -name "*.txt" -exec grep -Eo "[[:space:]]*([a-zA-Z][a-zA-Z0-9._-]*@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})([[:space:]]|[[:punct:]]|$)" {} \; | grep -Eo "[a-zA-Z][a-zA-Z0-9._-]*@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" | tr '[:upper:]' '[:lower:]' | sort -u > base.txt ``` ### Пояснение команды 1. `find ~ -name "*.txt"`: Ищем все текстовые файлы в домашней директории. 2. `-exec grep -Eo "... regex ..." {} \;`: Используем `grep` с регулярным выражением, чтобы найти всех совпадения с адресами электронной почты, оставляя только совпадения с помощью опции `-o`. 3. `grep -Eo "... regex ..."`: Второй `grep` отфильтровывает результат, оставляя только адреса электронной почты, без начальных и конечных символов. 4. `tr '[:upper:]' '[:lower:]'`: Приводим все символы к нижнему регистру. 5. `sort -u`: Сортируем и убираем дубликаты. 6. `> base.txt`: Перенаправляем вывод в файл `base.txt`. ### Шаг 8: Написание задания в файл user.job Создайте файл `user.job` и добавьте в него следующую команду: ``` #!/bin/bash find ~ -name "*.txt" -exec grep -Eo "[[:space:]]*([a-zA-Z][a-zA-Z0-9._-]*@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})([[:space:]]|[[:punct:]]|$)" {} \; | grep -Eo "[a-zA-Z][a-zA-Z0-9._-]*@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" | tr '[:upper:]' '[:lower:]' | sort -u > base.txt ``` Не забудьте сделать его исполняемым: ```bash chmod +x user.job ``` ### Шаг 9: Запланировать выполнение задания Для выполнения задания через одну минуту: ```bash at now + 1 minute < user.job ``` ### Шаг 10: Использование одного вызова grep Эту задачу можно упростить, объединив два вызова `grep` в один: ```bash find ~ -name "*.txt" -exec grep -Eo "[[:space:]]*([a-zA-Z][a-zA-Z0-9._-]*@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})([[:space:]]|[[:punct:]]|$)" {} \; | grep -Eo "[[:space:]]*([a-zA-Z][a-zA-Z0-9._-]*@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})" | tr '[:upper:]' '[:lower:]' | sort -u > base.txt ``` На этом всё! Вы можете протестировать эти команды в своем терминале и получить список электронных адресов.