当匹配csv字段中的字符时,将其替换为列标题,并与同一列上的另一个字段连接

当匹配csv字段中的字符时,将其替换为列标题,并与同一列上的另一个字段连接,csv,replace,sed,awk,concatenation,Csv,Replace,Sed,Awk,Concatenation,我有一个csv,其中包含域列表和我拥有的每个扩展列上的勾号: num;domaine;fr;com;xxx;net;eu;org;info;asia;com.tw;hk;mobi;net.cn;org.cw;tw 1;mydomain1;x;;;;;;;;;;;;; 2;mydomain2;x;x;x;x;;;;;;;;;; 3;mydomain3;x;x;x;x;x;x;;;;;;;;* 我想从此csv创建一个包含所有域扩展名的文本文件。扩展名: mydomain1.fr mydomain2

我有一个csv,其中包含域列表和我拥有的每个扩展列上的勾号:

num;domaine;fr;com;xxx;net;eu;org;info;asia;com.tw;hk;mobi;net.cn;org.cw;tw
1;mydomain1;x;;;;;;;;;;;;;
2;mydomain2;x;x;x;x;;;;;;;;;;
3;mydomain3;x;x;x;x;x;x;;;;;;;;*
我想从此csv创建一个包含所有域扩展名的文本文件。扩展名:

mydomain1.fr
mydomain2.fr
mydomain2.com
mydomain2.xxx
mydomain2.net
mydomain3.fr
mydomain3.com
mydomain3.xxx
etc.
我用sed和case做了一些肮脏的事情,但我相信一个更好的大脑可以给我一些解决问题的建议

提前谢谢

kent$  awk -F';' 'NR==1{for(i=3;i<=NF;i++)d[i]=$i;next}
                       {for(i=3;i<=NF;i++)if($i=="x")print $2"."d[i]}' file
mydomain1.fr
mydomain2.fr
mydomain2.com
mydomain2.xxx
mydomain2.net
mydomain3.fr
mydomain3.com
mydomain3.xxx
mydomain3.net
mydomain3.eu
mydomain3.org
较短版本:

awk -F';' '{for(i=3;i<=NF;i++)if(NR==1)d[i]=$i;else if($i=="x")print $2"."d[i]}' file

到目前为止,您在sed方面做了哪些尝试?为什么您对它不满意?一个单线解决方案,我相信聪明的人会提供这样的解决方案。它工作得很好。谢谢