繁体   English   中英

正则表达式 - 捕获和替换选择序列

[英]Regular Expression - Capture and Replace Select Sequences

拿下面的文件......

ABCD,1234,http://example.com/mpe.exthttp://example/xyz.ext
EFGH,5678,http://example.com/wer.exthttp://example/ljn.ext

请注意,“ext”是整个文件中的常量文件扩展名。

我正在寻找一个表达式将该文件转换为这样的...

ABCD,1234,http://example.com/mpe.ext
ABCD,1234,http://example/xyz.ext
EFGH,5678,http://example.com/wer.ext
EFGH,5678,http://example/ljn.ext

简而言之,我需要将所有内容捕获到网址中。 然后我需要捕获每个URL并将它们与前导捕获一起放在自己的行上。

我正在与sed一起工作,我无法弄清楚如何让它正常工作。 有任何想法吗?

如果每行中的URL数量保证为2,您可以使用:

sed -r "s/([A-Z0-9,]{10})(.+\.ext)(.+\.ext)/\1\2\n\1\3/" < input

这不要求前两个字段是特定宽度或限制逗号之间的(非逗号)字符集。 相反,它键入逗号本身。

sed 's/\(\([^,]*,\)\{2\}\)\(.*\.ext\)\(http:.*\)/\1\3\n\1\4/' inputfile.txt

您可以更改“2”以匹配任意数量的逗号分隔字段。

我此刻没有可用的sed。

岂不

sed -r 's/(....),(....),(.*\.ext)(http.*\.ext)/\1,\2,\3\n\1,\2,\4/g' 

做诀窍?

编辑删除了懒惰的量词

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM