小编Giu*_*ato的帖子

使用sed或awk拆分数据

我有很多数据,我试图用CSV分割.我的源数据具有以下格式:

* USER 'field1' 'mail1@domain.com' 'field3'
* USER 'field1' 'mail2@domain.com' 'field3'
* USER 'field1' 'mail3@domain.com' 'field3'
Run Code Online (Sandbox Code Playgroud)

以下是我想要输出的内容:

field1;mail1@domain.com;field3
field1;mail2@domain.com;field3
field1;mail3@domain.com;field3
Run Code Online (Sandbox Code Playgroud)

规则:

  1. * USER 在线的开头必须明显剥离;
  2. field1并且field3可以是电子邮件地址,也可以包含';
  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 …
Run Code Online (Sandbox Code Playgroud)

regex bash shell awk sed

2
推荐指数
1
解决办法
256
查看次数

Sed:在匹配之前打印 2 行

我需要在文件内的匹配之前打印前两行(对于任何匹配)如何制作?

谢谢

sed

2
推荐指数
1
解决办法
4201
查看次数

标签 统计

sed ×2

awk ×1

bash ×1

regex ×1

shell ×1