Я пытаюсь выбрать все адреса электронной почты и переместить их в конец строки с помощью sed. Я успешно выяснил, как выбрать адреса электронной почты, но не может сделать ничего, кроме append $ до конца - есть ли способ объединить & (для вставки обратно в выбранные слова) и $ (для перехода к концу строки), чтобы выполнить то, что я ищу? Или я должен искать другой метод?Попытка переместить слово в конец строки с помощью sed
-bash-3.2$ sed "s/[a-z]*@*\.*\.[a-z].[a-z]/& $/" address
Xiao Li, [email protected] $, 6705462234, Jackson, NC 764
Elizi Moe, [email protected] $, 5208534566, Tempe, AZ 85282
Ma Ta, [email protected] $, 4345667345, Austin, TX 91030
Diana Cheng, [email protected] $, 5203456789, Matitsi, WY 4587
Jackson Five, [email protected] $, 5206564573, Kyenta, AZ 85483
Adi Srikanth Reddy, [email protected] $.edu, 6578904566, Wyo, WS 67854
Natkin William, [email protected] $.edu, 8044344528, Richmond, VA 22345
* Примечание: эти вымышленные имена, адреса & номера телефонов.
Это сработало! Не могли бы вы объяснить, как или, по крайней мере, объяснить цель \ 1 \ 3 \ 2? – IAspireToBeGladOS
Спасибо !!! Это действительно эффективный способ разделения данных на столбцы для манипуляций - я буду помнить об этом. – IAspireToBeGladOS
@IAspireToBeGladOS Он работает до тех пор, пока в столбцах нет запятых, и я не знаю, насколько хорошо он будет работать, когда некоторые столбцы пустые. Это зависит от того, насколько хорошо файл отформатирован. Ваша команда sed из вопроса не работает, потому что '&' соответствует только столбцу электронной почты, '& $' добавляет литерный знак доллара. Вы не перемещаете столбец вокруг. Поэтому вам нужно сопоставить части слева и справа от электронной почты с группами захвата и поменять местами с помощью обратных ссылок. –