首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式替换记录中的最后n个分隔符

正则表达式替换记录中的最后n个分隔符
EN

Stack Overflow用户
提问于 2012-07-07 19:36:42
回答 2查看 93关注 0票数 0

我有一个csv文件,其中的记录如下:

代码语言:javascript
复制
^Tablete Internet^|GoClever|^TAB I71^|^Tableta GoClever TAB I71, InfoTMIC iMAPx220 1GHz MKV, MOV, VOB, DAT, WMV, AVI, 3GP, MP4, RM, RMVB, FLV, MKV, MOV, VOB, DAT, WMV, MP3!WAV!OGG!FLAC!APE!AAC, Conectori: 1x mini jack 3.5 mm, 2 porturi USB 2.0, 4000 mAh lithium-ion polymer 3.7V^!92.00!USD!w!24!0!Link!!^5 ron^!!|
Group|Prod|Den|Description!12!EUR!^wait time^!160!Modified!Link!^Spec Obs^!^tv none^!more!info|

我需要替换"!“中的最后10个从带有"|“的行尾开始,最后看起来就像这样:

代码语言:javascript
复制
^Tablete Internet^|GoClever|^TAB I71^|^Tableta GoClever TAB I71, InfoTMIC iMAPx220 1GHz MKV, MOV, VOB, DAT, WMV, AVI, 3GP, MP4, RM, RMVB, FLV, MKV, MOV, VOB, DAT, WMV, MP3!WAV!OGG!FLAC!APE!AAC, Conectori: 1x mini jack 3.5 mm, 2 porturi USB 2.0, 4000 mAh lithium-ion polymer 3.7V^|92.00|USD|w|24|0|Link||^5 ron^|||
Group|Prod|Den|Description|12|EUR|^wait time^|160|Modified|Link|^Spec Obs^|^tv none^|other|info|

我已经尝试过了:

代码语言:javascript
复制
sed 's/!\([^\^!]*\)!\([^!]*\)$/|\1|\2/'

但这只替换了最后两次出现的"!“。如果我尝试

代码语言:javascript
复制
sed 's/!\([^\^!]*\)!\([^!]*\)!\([^!]*\)$/|\1|\2\3/'

它不匹配任何东西..。那么我该怎么做呢?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-08 03:48:43

我知道这不是最优雅的解决方案,但我已经设法做到了:

代码语言:javascript
复制
perl -npe 's/^(.*)!(.*)!(.*)!(.*)!(.*)!(.*)!(.*)!(.*)!(.*)!(.*)!(.*)$/$1|$2|$3|$4|$5|$6|$7|$8|$9|$10|$11/'

谢谢!

票数 0
EN

Stack Overflow用户

发布于 2012-07-08 01:29:32

给你,http://refiddle.com/2l5

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11374655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档