有一个脚本
#!/bin/bash
sed -E 's/([^,]*,([^,]*),) ?(([[:alpha:]])[^ ]* +)(([^,]*),[^,]*,)[^,]*/1u3u5L462@example.com/' file.csv > output.csv
有一个文件。csv:
id,location_id,name,title,email,directorate
1,1, Amy Lee,Singer,,,
2,2,brad Pitt,Actor,bpitt@example.com,Production
3,5,steven spielberg,Producer,Screenwriter, spielberg@yahoo.com,Production
4,8,Andy lee,Comedian,,Radio
有几个问题,我需要解决:
- title值可以是多个标题,例如:Steve Spielberg - Producer,Screenwriter。现在脚本切断逗号后的值,但我需要保存所有标题。
- 脚本连接名字和姓氏的首字母,加上location_id和@google.com,但我需要添加location_id,只有当有一个相等的电子邮件。
最后应该是:
id,location_id,name,title,email,directorate
1,1, Amy Lee,Singer,alee1@example.com,,
2,2,Brad Pitt,Actor,bpitt@example.com,Production
3,5,Steven Spielberg,Producer,Screenwriter,sspielberg@example.com,Production
4,8,Andy Lee,Comedian,alee8@example.com,Radio
假设directorate不包含逗号:
sed -E 's/([^,]*,([0-9]+), *([[:alpha:]])[^ ]* *([[:alpha:]]*).*,)(,[^,]*$)/1342@example.com5/'
这个总是添加位置id号。通过添加第二个过滤器,可以仅对重复的示例电子邮件执行此操作。还可以考虑使用ID(第一列)来代替,以防重复的位置+名称。