向sed进程添加for循环



有一个脚本

#!/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(第一列)来代替,以防重复的位置+名称。

最新更新