我有这样的文件:
Antwerpen;stad;Antwerpen;204,51;483505;Antwerpen;Berendrecht-Zandvliet-Lillo;Deurne;Borgerhout;Merksem;Ekeren;Berchem;Hoboken;Wilrijk
Gent;stad;Oost-Vlaanderen;156,18;243366;Gent;Mariakerke;Drongen;Wondelgem;Sint-Amandsberg;Oostakker;Desteldonk;Mendonk;Sint-Kruis-Winkel;Gentbrugge;Ledeberg;Afsnee;Sint-Denijs-Westrem;Zwijnaarde
Brugge;stad;West-Vlaanderen;138,40;116741;Brugge;Koolkerke;Sint-Andries;Sint-Michiels;Assebroek;Sint-Kruis;Dudzele;Lissewege
我想要实现的是在一个数字后跟&#34 ;;"然后是文字:
(例如:483505;安特卫普)
我想替换每个";"使用","。
结果应如下所示:
Antwerpen;stad;Antwerpen;204,51;483505;Antwerpen, Berendrecht-Zandvliet-Lillo, Deurne, Borgerhout, Merksem, Ekeren, Berchem, Hoboken, Wilrijk
Gent;stad;Oost-Vlaanderen;156,18;243366;Gent, Mariakerke, Drongen, Wondelgem, Sint-Amandsberg, Oostakker, Desteldonk, Mendonk, Sint-Kruis-Winkel, Gentbrugge, Ledeberg, Afsnee, Sint-Denijs-Westrem, Zwijnaarde
Brugge;stad;West-Vlaanderen;138,40;116741;Brugge, Koolkerke, Sint-Andries, Sint-Michiels, Assebroek, Sint-Kruis, Dudzele, Lissewege
如何使用sed实现这一目标?
答案 0 :(得分:0)
只需使用awk:
$ awk 'match($0,/[0-9];[[:alpha:]](.*)/,a) { gsub(/;/,", ",a[1]); $0 = substr($0,1,RSTART+2) a[1] } 1' file
Antwerpen;stad;Antwerpen;204,51;483505;Antwerpen, Berendrecht-Zandvliet-Lillo, Deurne, Borgerhout, Merksem, Ekeren, Berchem, Hoboken, Wilrijk
Gent;stad;Oost-Vlaanderen;156,18;243366;Gent, Mariakerke, Drongen, Wondelgem, Sint-Amandsberg, Oostakker, Desteldonk, Mendonk, Sint-Kruis-Winkel, Gentbrugge, Ledeberg, Afsnee, Sint-Denijs-Westrem, Zwijnaarde
Brugge;stad;West-Vlaanderen;138,40;116741;Brugge, Koolkerke, Sint-Andries, Sint-Michiels, Assebroek, Sint-Kruis, Dudzele, Lissewege
以上使用GNU awk为第3个arg匹配()。