gpt4 book ai didi

linux - sed 匹配后替换

转载 作者:太空宇宙 更新时间:2023-11-04 12:45:33 25 4
gpt4 key购买 nike

我有这样一个文件:

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

我想要实现的是在数字后跟“;”后跟文字:

(例如: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 实现此目的?

最佳答案

只需使用 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 作为第三个参数来匹配 ()。

关于linux - sed 匹配后替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38814418/

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