我试图仅打印文件中的电子邮件地址,文件格式如下:
{"12":"34","email":"[email protected]","firstname":"john","lastname":"smith","text":"0","sig":"js","..":"2017-08-23"}
我怎样才能使用 awk -F 提取?所以我可以使用 awk -F'"' '{print $8}' 但第 8 列可能并不总是电子邮件地址。
有没有办法将 awk -F 与“@”正则表达式一起使用?或者在单独的行中打印分隔符中的所有文本,然后将其通过管道传输到 | grep '@'
谢谢
答案1
答案2
这是一个awk
办法。
awk -v RS=\" '/@/' infile.txt
当你有引用字段时,上面是正确的,否则你应该有带有多个 RecordSeperators 的 RS。RS='[[:blank:]]*:'
就像您评论中的示例一样。
答案3
reg-ex 可能需要调整才能完全符合 RFC 5322,但作为初学者,请尝试:
awk '{match($0,"[a-zA-z0-9._%+-]+@[a-zA-z0-9._%+-]",a)}END{print a[0]}'