Я пытаюсь распечатать только адреса электронной почты из файла, формат файла следующий:
{"12":"34","email":"johnsmith@gmail.com","firstname":"john","lastname":"smith","text":"0","sig":"js","..":"2017-08-23"}
Как я могу просто извлечь с помощью awk -F? Поэтому я могу использовать awk -F '"' '{print $ 8}', но восьмой столбец не всегда может быть адресом электронной почты.
Есть ли способ использовать awk -F С регулярным выражением '@' ? Или распечатайте все тексты в разделителе отдельными строками, а затем передайте их по конвейеру | grep '@'
Спасибо
Это awk
способ.
awk -v RS=\" '/@/' infile.txt
Вышеупомянутое верно, когда вы заключаете поля в кавычки, иначе у вас должен быть RS с несколькими RecordSeperators. как RS='[[:blank:]]*:'
по вашему образцу в вашем комментарии.
Регистр -ex может нуждаться в настройке для полного соответствия RFC 5322, но для начала попробуйте:
awk '{match($0,"[a-zA-z0-9._%+-]+@[a-zA-z0-9._%+-]",a)}END{print a[0]}'