gpt4 book ai didi

regex - 使用 sed 或 awk 拆分数据

转载 作者:行者123 更新时间:2023-11-29 09:35:32 24 4
gpt4 key购买 nike

我有很多数据要拆分为 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

规则:

    行首的
  1. * USER必须明显去掉;
  2. field1field3 可以是电子邮件地址,也可以包含'
  3. field1 可以为空 ''
  4. 第二个字段始终是电子邮件地址;
  5. 每个字段在字段本身的开头和结尾都有'

我的想法是剥离 * 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'

最佳答案

更新:您可以将此 awk 用于提供的输入:

awk -F " '" '{gsub(/^ +| +$/, "", $3);
s=sprintf("%s;%s;%s;", $2,$3,$4); gsub(/'"'"';/, ";", s); print s}' file
;alberto.cordini@generaligroup.com;CORDINI ALBERTO;
moglie delmonte daniele;anna.borghi@rpos.com;Anna Borghi;
;annamaria.cravero@generaligroup.com;CRAVERO ANNA MARIA;
;patrizia.dagostino@generaligroup.com;D'AGOSTINO PATRIZIA;
;piero.depra@generaligroup.com;DE PRA' PIERO;
;viviana.dingeo@generaligroup.com;D'INGEO VIVIANA;

关于regex - 使用 sed 或 awk 拆分数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20610887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com