【发布时间】:2013-12-16 12:23:21
【问题描述】:
我有很多数据要以 CSV 格式拆分。我的源数据格式如下:
* USER 'field1' 'mail1@domain.com' 'field3'
* USER 'field1' 'mail2@domain.com' 'field3'
* USER 'field1' 'mail3@domain.com' 'field3'
这就是我想要得到的输出:
field1;mail1@domain.com;field3
field1;mail2@domain.com;field3
field1;mail3@domain.com;field3
规则:
-
行首的
* USER必须明显去掉; -
field1和field3可以是电子邮件地址,也可以包含'; -
field1可能为空'' - 第二个字段始终是电子邮件地址;
- 每个字段的开头和结尾都有
'。
我的想法是剥离* USER(sed -e 's/^* USER //' 可能是一个起点),然后在“中心”字段中“找到”邮件,然后将左侧和右侧捕获为两个变量。最后一件事应该是去掉变量上的开头和结尾'。
不幸的是,我没有这个级别的 sed 或 awk 知识。关于如何实现这一点的任何想法?
这里是一个例子
* USER '' 'alberto.cordini@generaligroup.com' 'CORDINI ALBERTO'
* USER 'moglie delmonte daniele' 'anna.borghi@rpos.com' 'Anna Borghi'
* USER '' 'annamaria.cravero@generaligroup.com' 'CRAVERO ANNA MARIA'
* USER '' 'patrizia.dagostino@generaligroup.com' 'D'AGOSTINO PATRIZIA'
* USER '' 'piero.depra@generaligroup.com' 'DE PRA' PIERO'
* USER '' 'viviana.dingeo@generaligroup.com' 'D'INGEO VIVIANA'
【问题讨论】:
-
如果您能够添加一个小样本,其中包含您添加到帖子中的案例/规则,那肯定会更容易提供帮助。
-
我在下面贴了一个例子
-
为什么使用
'而不是"来包围可能包含'的名称? ...它在自找麻烦。